Spring132 Jar 파일에 대해 김영한님의 스프링 부트 - 핵심 원리와 활용 편을 보고 간단히 정리한 내용입니다. 강의를 직접 들어보시는 것을 추천합니다. 스프링부트로 생성한 프로젝트를 빌드하면 Jar 파일이 생성됩니다. Jar 파일을 확인하기 위해 cmd 창에서 해당 프로젝트 경로로 들어가서 빌드를 합니다. gradlew clean build 를 입력하고 jar 파일을 찾아들어갑니다. build -> libs 에서 확인할 수 있습니다. boot-0.0.1-SNAPSHOT.jar 파일의 크기를 보면 약 18M 인 것을 확인할 수 있습니다. 작지 않은 크기인데, jar 에 어떤 내용이 있는지 확인해보겠습니다. 압축을 푸는 방법은 jar -xvf boot-0.0.1-SNAPSHOT.jar 를 입력합니다. BOOT-INF 와 META-INF.. 2023. 3. 1. OkHttp 사용법 보호되어 있는 글 입니다. 2023. 2. 26. RestTemplate의 개념과 기본 사용법 스프링에서 제공하는 HTTP 통신 기능을 쉽게 사용할 수 있게 설계되어 있는 템플릿입니다. HTTP 서버와의 통신을 단순화하고 RESTful 원칙을 지킬수 있으며 동기 방식으로 처리됩니다. REST 서비스를 호출하도록 설계되어 HTTP 프로토콜의 메소드에 맞게 여러 메소드를 제공합니다. + 스프링 5.0 이후 부터는 WebClient 를 사용하기를 권장합니다. https://tecoble.techcourse.co.kr/post/2021-07-25-resttemplate-webclient/ RestTemplate과 WebClient 이 글은 자바에서 HTTP 요청을 써봤거나 써보려고 하는 독자를 대상을 작성하였습니다. 스프링 어플리케이션에서 HTTP 요청할 때 사용하는 방법으로 RestTemplate과 W.. 2023. 2. 26. JPA 벌크 연산 처리 방법 및 주의점 JPA 에서 벌크 연산을 하는 방법에 대해 알아보겠습니다. 먼저, 벌크 연산은 말 그대로 어떤 조건이나 상황에 따라 한번에 연산(수정) 하는 것을 의미합니다. 가장 중요한 개념은, 벌크 연산 시 SQL 을 실행하는 것이기 때문에 1차 캐시를 거치지 않고 바로 DB 로 접근해서 값을 수정합니다. 따라서, 1차 캐시를 초기화 하지 않으면, 수정한 데이터의 DB 값과 1차 캐시에 있는 값의 정합성이 다르게 됩니다. 예시는 스프링 데이터 JPA 강의 및 QueryDsl 내용을 참고했습니다. 2가지 방법으로 나뉩니다. 스프링 데이터 JPA 를 사용하지 않는 방법과 스프링 데이터 JPA 를 사용한 방법으로 나뉩니다. 먼저 첫번째 스프링 데이터 JPA 를 사용하지 않는 방법입니다. 예시는 정해진 age 보다 크거나 .. 2023. 2. 25. @queryProjection 이란 ? querydsl 프로젝트를 하면서 Dto 생성자에 @queryProjection 을 사용하는 코드를 보았습니다. 간단히, Q타입의 파일을 만들어주어, repository 에서 querydsl 코드를 작성할 때 도움을 주는 것으로 학습했는데, 조금 더 자세히 살펴보려고 합니다. 먼저, Projection 은 select 절에 대상을 지정하는 것입니다. 즉 테이블에서 원하는 컬럼만 뽑아서 조회할 수 있습니다. Entity를 직접 사용하면 불필요한 데이터 값을 넘길 수 있는데, 원하는 컬럼만 뽑아 사용한다면 더욱 효율적인 코드를 작성할 수 있기에 충분히 사용할만한 가치가 있다고 생각합니다. 편리하지만 아키텍처에 관련해 고려해야 할 점이 있습니다. Dto 클래스의 생성자가 QueryDsl 에 의존하게 됩니다. .. 2023. 2. 24. 리눅스 기본 명령어 정리 - 최신화(23.02.21) 프로젝트 진행 및 배포, 다른 다양한 작업을 하면서 리눅스를 사용할 일이 많아 질 거 같습니다. 이전에 프로젝트를 할 때, 찾아가면서 간단한 명령어만 사용했지만, 조금 더 능숙하게 해야 하는 것은 필수 인 것 같습니다. 여러 블로그를 통해 내가 써보았고, 경력있으신 분들이 자주 사용했던 내용을 정리했습니다. 1. 폴더 이동 관련 - pwd : 현재 폴더 위치 조회 - cd [폴더경로] : 폴더로 이동 - cd ~ : 홈 폴더로 이동 - cd / : 최상위 폴더로 이동 - cd . : 현재 폴더 - cd .. : 이전(상위) 폴더로 이동 2. 폴더 위치 확인 - ls : 현재 위치의 파일 목록 조회 - ls -l : 파일의 상세정보 조회 - ls -a : 숨긴 파일 표시 - ls -t : 파일 생성 시간순.. 2023. 2. 21. Service 인터페이스는 거의 사용하지 않는다. 프로젝트를 하다보면 다양한 인터페이스를 만들고 인터페이스를 구현하는 형식으로 진행하는 경우가 많습니다. 이전 프로젝트에서는 Service 를 모두 인터페이스로 먼저 생성하고 구현을 진행을 했습니다. 전략패턴이라는 것을 배우면서 갈아끼우는 것이 미래에도 굉장히 좋은 선택이다 라고 생각해 무지성으로 작성했던 것 같습니다. 아래처럼 서비스 인터페이스를 만들고 구현 클래스를 따로 만들어서 로직을 구현했습니다. 막상 작성해보니, 일단 DI 를 사용할 일이 없었고, 작성할 코드량이 많아졌으며 메서드 네이밍이나 매개변수의 타입 등을 변경할 때 인터페이스에서도 고쳐야하는 번거로움이 생겼습니다. 그 중에 장점을 하나 뽑자면, 개인적으로는 메서드(어떤 기능을 하는지) 를 한눈에 볼 수 있다는 점이 있었습니다. public.. 2023. 2. 19. JWT 토큰 + @AuthenticationPrincipal @AuthenticationPrincipal 어노테이션을 사용하면 JWT 토큰 정보에 필터링 된 유저정보를 Controller 에서 간단히 가져올 수 있습니다. 이번 포스팅에서 변경해볼 사항은 SecurityContextHolder (이전) -> @AuthenticationPrincipal(변경) 해보겠습니다. Spring Security 에서는 인증된 사용자 정보를 SecurityContextHolder 내부의 SecurityContext 에 Authentication 객체로 저장을 하고 이후 필요할 때 꺼내어 사용합니다. SecurityContextHolder 에 저장된 회원을 꺼내어 사용하는 방법을 알아보겠습니다. 먼저 해당 어노테이션을 몰랐을 때, 사용했던 방법은 아래와 같은 방법을 통해 auth.. 2023. 2. 11. SpringSecurity Enum 타입으로 권한 설정하기 사전과제로 여러 요구사항 중 권한을 부여하는 요구가 있어 정리했습니다. 이전에 프로젝트할 때 구현을 해보았을 때 권한부분에서는 순조로웠는데, 이번에는 403 에러가 계속 발생해 설정에 관한 부분을 다시 한번 학습할 수 있었습니다. 권한을 Enum 으로 지정한 클래스입니다. Enum 으로 지정한 이유는 잘못된 권한(값) 이 들어오지 않도록 하기 위해서 입니다. 3가지 권한이 있는데 여기서 실수가 있었습니다. ROLE_ 을 안붙여줘서 403 에러가 발생했습니다. 붙여야 하는 이유는 SpringSecurity 가 prefix를 자동으로 "ROLE_" 을 넣어주기 때문입니다. @Getter public enum AccountType { ROLE_LESSOR("임대인"), ROLE_REALTOR("공인중개사"),.. 2023. 2. 7. 이전 1 2 3 4 5 6 7 ··· 15 다음