Spring 5

@PostConstruct와 @Value 그리고 bean life cycle 관하여

@Value의경우 appilcation.property의 값을 의존성 주입단계에서 필드주입방식으로 값을 할당한다 아래와 같이 생성자를 통하여 headers에 값을 주려고하면 빈생성 단계에서 해당된 값을 아직 주입 받지 않아서 null값이 할당 되고 그후 @Value를 통해 필드 주입이 되기 때문에 의도한 대로 작동하지 않는다. @Component @Getter @Setter @ToString public class HeadersDto { @Value("${headers.remote_token}") private String remote_token; @Value("${headers.Cookie}") private String Cookie; private String timestamp; @Value("${h..

Spring 2023.04.03

@Data,@Getter,@Setter 롬북(LOMBOK)의 기능

롬북을 사용하면 코드를 간편하고 깔끔하게 정리할 수 있다. 사용하기 전과 후를 비교해보자. public class Member { private Long id; private String name; private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public Member(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } public String getN..

Spring 2023.02.19

의존성주입(DI) 4가지 방법 및 생성자주입을 써야하는 이유

의존관계 주입은 크게 4가지 방법이 있다. 1.생성자 주입 ★★★ 2.수정자 주입 (setter주입) 3.필드 주입 4.일반 메서드 주입 1.생성자 주입 ★★★ 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법이다. 지금까지 우리가 진행했던 방법이 바로 생성자 주입이다. 특징 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용 단, 생성자 주입시 그 빈을 주입받는 생성자가 단 1개뿐이라면 @Autowired를 생략할 수 있다. 동일한 타입의 빈이 여러개 등록되어있으면 이름이 일치하는 빈을 주입한다. @Service public class OrderServiceImpl implements OrderService { private final MemberRepository..

Spring 2023.02.19

2가지 싱글톤 bean등록 방법 @Configuration와 @Component

방법1. 수동 빈 등록방법 @Configuration은 스프링 컨테이너에 bean객체를 싱글톤방식으로 등록해준다. 기본으로 싱글톤 방식을 제공하고 필요에 따라 설정할 수 있다. @Configuration @Bean을 사용하여 빈을 스프링 컨테이너에 등록하였다. @Configuration public class BeanCreate { @Bean public String bean1(){ return new beanImpl().bean1(); } @Bean public String bean2(){ return new beanImpl().bean1(); } @Bean public String bean3(){ return new beanImpl().bean1(); } @Bean public String bean4..

Spring 2023.02.12

@bean

AplicationContext는 즉 스프링 컨테이너라고 생각하면 된다 스프링 컨테이너에 @Configuration @Bean의 어노테이션을 사용하여 bean을 등록하였고 getBean메소드를 사용하여 등록된 bean을 조회하였다. @Configuration public class BeanCreate { @Bean public String bean1(){ return new beanImpl().bean1(); } @Bean public String bean2(){ return new beanImpl().bean2(); } @Bean public String bean3(){ return new beanImpl().bean3(); } @Bean public String bean4(){ return new b..

Spring 2023.02.05