728x90
반응형

0+ 스프링/0+ 스프링 Core 3

[스프링 Core] 도대체 DI(Dependency Injection) 란 무엇인가?

[스프링 Core] 도대체 DI(Dependency Injection) 란 무엇인가? 스프링의 핵심 3대 요소 AOP, IOC, DI를 들어보신 적이 있을 것 입니다. 오늘은 DI가 도대체 무엇인지 확실하게 설명해드리겠습니다…!! 그리고 스프링 컨테이너가 IoC인 이유를 알아봅시다. 문제 인식 🤔 public class Driver { private Avante avante; public Driver() { this.avante = new Avante(); } public void drive() { avante.start(); } } 위 클래스는 2가지 문제점이 있습니다. 두 클래스가 강하게 결합 객체들간의 관계가 아니라 클래스간의 관계가 맺어짐 두 클래스가 강하게 결합 Driver 클래스는 Avante..

[스프링 Core] 스프링 빈 초기화(@PostConstruct, @PreDestroy)

[스프링 Core] 스프링 빈 초기화(@PostConstruct, @PreDestroy) 우리는 스프링 빈을 등록하고 초기화 해야하는 작업을 해야할 때가 있습니다. 객체를 생성할 때 초기화하면 되지 않나? 🤔 라고 생각할 수 있습니다. 하지만, 객체를 생성하는 생성자와 초기화 작업은 분리하는 것이 좋습니다. 그렇다면 어떻게 스프링 빈을 초기화할 수 있을까요? 참고 생성자 안에서 상대적으로 무거운 초기화 작업을 함께 하는 것보다는 객체를 생성하는 부분과 초기화 하는 부분을 명확하게 나누어 관리하는 것이 유지보수에도 좋습니다. 스프링 빈 생명주기 🌱 먼저 스프링 빈의 생명주기에 대해서 알아야 합니다. 스프링 빈은 아래와 같은 생명주기를 갖고 있습니다. 객체 생성 -> 의존관계 주입 -> (데이터 사용 가능)..

[스프링 Core] @Configuration를 사용하면 싱글톤을 유지할 수 있는 이유(CGLIB)

[스프링 Core] @Configuration를 사용하면 싱글톤을 유지할 수 있는 이유(CGLIB) 미리 보는 결론 @Configuration은 싱글톤을 위해서 존재합니다. @Bean만 사용해도 스프링 빈으로 등록이 가능 @Configuration을 사용하면 바이트 코드를 조작하는 CGLIB를 사용하여 클래스를 상속받는 프록시 객체를 만들어서 스프링 빈을 싱글톤으로 관리할 수 있게 해준다. 스프링 설정 정보는 반드시 @Configuration을 사용하자! @Configuration 예시 스프링 컨테이너는 기본값으로 모든 인스턴스를 싱글톤으로 관리합니다. 그런데 아래와 같은 코드를 보면 좀 이상하지 않나요? ApplicationConfig @Configuration public class Applicati..

728x90
반응형