본문 바로가기

spring31

[Spring] @PostConstruct와 @PreDestroy @PostConstruct PostConstruct 어노테이션은 초기화를 수행하기 위해 의존성 주입이 완료된 후 실행해야 하는 메서드에서 사용하며, 이 메서드는 클래스를 사용하기 전에 호출되어야 합니다. 다른 Bean이 이 Bean을 사용할 수 있게 되기 전에 이 메서드가 호출되며, 이때 애플리케이션이 실행되고 Bean이 로드됩니다. @Component class SomeClass { private SomeDependency someDependency; public SomeClass(SomeDependency someDependency) { super(); this.someDependency = someDependency; System.out.println("All dependencies are read.. 2023. 10. 6.
[Spring] Bean 스코프 싱글톤 스코프 기본적으로 Spring Framework에서 생성되는 모든 Bean은 싱글톤으로 생성됩니다. Spring IOC 컨테이너 당 객체 인스턴스를 딱 하나를 가지게 됩니다. 따라서 Spring IoC 컨테이너에서 같은 인스턴스를 다시 사용하고 싶다면 싱클톤 스코프를 사용하면 됩니다. @Component class NormalClass { } @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Component class PrototypeClass { } @Configuration @ComponentScan public class BeanScopesLuncherApplication { public static void main(String[] ar.. 2023. 10. 5.
[Spring] 지연 초기화 지연 초기화 초기화 작업을 미루다가 사용자가 필요로 할 때 진행하는데, 이 방법을 통해 메모리 낭비를 줄일 수 있다는 장점이 있다. 그리고 이는 퍼포먼스의 향상으로 이어집니다. 이 지연 초기화를 사용할 때에는 @Lazy라는 어노테이션을 통해서 사용을 하게 됩니다. @Component class ClassA { } @Component @Lazy // 지연 초기화 class ClassB { private ClassA classA; public ClassB(ClassA classA) { // Logic System.out.println("Some Initialization logic"); this.classA = classA; // ClassA 초기화 } public void doSomething(){ Sys.. 2023. 10. 4.
[Spring] @Component와 @Bean의 차이 Spring을 사용하다 보면 @Component와 @Bean을 사용헤보게 되고 둘 다 빈을 생성하는데 차이점에 대해서 궁금하게 되었습니다. @Bean @Configuration public class TestConfiguration { @Bean public String name() { return "MyName"; } @Bean public int age() { return 25; } @Bean은 외부 라이브러리 또는 이미 정의되어 있는 객체들이 서로 종속성을 가지고 있을 경우의 빈 등록에 사용하는 어노테이션입니다. 또한 반환 값이 바로 Bean으로 등록되며 이미 정의된 기본 객체를 재정의하거나 내가 만든 객체의 종속성을 위해 빈을 등록할 때 사용합니다. 즉, 메소드 단위에서 개발자가 외부 라이브러리 .. 2023. 10. 2.
[Spring] Spring Bean Spring Bean Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부릅니다. IOC 사용자는 객체를 직접 생성하지 않고, 객체의 생명주기를 컨트롤하는 주체는 다른 주체가 됩니다. 즉, 사용자의 제어권을 다른 주체에게 넘기는 것을 IOC(제어의 역전) 라고 합니다. Java Bean과 차이점 1. Java Bean getter / setter public의 no-argument 생성자 모든 필드는 private로 getter와 setter를 통해서만 접근 가능 public class Payment { private String paymentCode; private int price public String getPaymentCode() { return paymentCode; } .. 2023. 10. 1.
[Spring] Dispatcher-Servlet Dispatcher-Servlet 디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있습니다. 그리고 이러한 단어를 포함하는 디스패처 서블릿은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있습니다. 이것을 보다 자세히 설명하자면, 1. 클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 2. 이 모든 요청을 프론트 컨트롤러인 디스패처 서블릿이 가장 먼저 받게 됩니다. 3. 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야 하는 컨트롤러를 찾아서 작업을 위임합니다. Front Controller란? Front Contr.. 2022. 12. 17.