spring 4

Spring @Order 로 Bean 순서 정의하기

스프링의 @Order 어노테이션은 컴포넌트나 빈의 로드 순서를 정의할 수 있다. 같은 타입의 빈이 Autowired 될 때 그 순서를 @Order를 이용하여 정의하는 것이다. 예시 코드는 아래와 같다. 오른쪽 테스트 코드를 보면 List 타입을 Autowired 할 때 @Order에 정의된 순서대로 불러오게 된다. @Order를 자세히 보게 되면 값에는 정수형이 들어가고 기본 값은 Ordered.LOWEST_PRECEDENCE이다. Ordered.LOWEST_PRECEDENCE를 보게 되면 아래와 같고 정수의 최댓값을 나타내며 가장 낮은 우선순위를 뜻한다. 가장 우선순위를 높게 하기 위해선 정수형의 최댓값인 Ordered.HIGHEST_PRECEDENCE를 이용하면 된다. @Order의 값이 중복될 경우..

공부/Spring 2021.02.15

Spring @Profile 로 환경에 따라 다르게 설정하기 (+ @ActiveProfiles 로 테스트 하기)

@Profile 환경에 따라 다르게 동작해야 하는 경우가 있다. 이 때 @Profile이라는 어노테이션을 활용하면 간편하게 적용이 가능하다. 먼저 product, development, test 환경이 있고 각각의 환경에서 발송 기능 사용시 다르게 동작해야 한다고 하자. 먼저 발송하는 곳 소스이다. 발송하는 곳에서 환경에 따라 분기가 되는 것은 적합하지 않다고 생각한다. 그래서 저 Sender 객체를 생성하는 곳에서 분기가 되어야 한다. 그 과정에서 @Profile을 사용한다. 위 코드만 봐도 @Profile이 어떻게 사용되는지 대충 알 수 있다. 복수도 지원하고 산술연산자도 지원한다. 어플리케이션 실행 시 각각의 profile에 따라 다른 값이 빈이 동작하는 것을 확인 할 수 있다. @ActivePro..

공부/Spring 2021.01.08

Codeigniter 4! 새로운 기능과 특징

처음 php로 웹 개발을 하였고 codeigniter3를 사용하였다. codeigniter4가 RC버전이 나올 때부터 codeigniter4를 이용하였다. codeigniter3와 4의 차이점 4의 장점 및 특징과 느낀 점을 잊기 전에 정리하려고 한다. 인스턴스 생성 방법 가장 처음 눈에 크게 띄는 차이점이다. codeigniter 4부터 네임스페이스를 사용하게 되고 컴포넌트들을 불러오는데 큰 차이가 있다. 기존에는 싱글톤으로 인스턴스를 생성하여 사용하던 방식과는 많이 다르다. // codeigniter 3 $this->load->library("message"); $this->message->action(); $this->load->model("user"); $user = $this->user->get..

공부/PHP 2020.12.02

옵셔널(optional)과 람다(lambda)를 이용하여 JpaRepository에서 예외 처리하기

spring에서 JpaRepository의 findById를 이용하면 Optional 타입으로 반환이 된다. 처음에는 불편하기만 하였으나 이제 많이 편해져서 혹시라도 아직 불편하게 사용하는 사람들을 위해서 그 방법을 공유한다. 아래 4가지의 코드는 같은 로직을 가독성이 좋게 코드를 조금씩 수정한 것이다. 가나다 많이 이상하고 불편했던 경우 Optional optinalUser = userRepository.findById(id); // check for null if(optinalUser.isPresent()) { User user = optinalUser.get(); } else { throw new ResourceNotFoundException(); } 옵셔널 타입이 아닌 일반 객체로 받았을 경우 U..

공부/Spring 2020.11.17
728x90
반응형