기술 창고(246)
-
[Spring Boot] xml 설정 파일을 이용한 Bean 관리 및 사용
최근 몇 년간 Spring을 사용해 본 개발자 분들이라면 대부분 xml 파일을 자주 사용하진 않았을 것입니다. 불과 한 20년 전만 해도 모든 설정 내용들을 xml 파일에 넣어서 관리했다고 합니다. 따라서, 현재의 개발 흐름에 따르면 xml을 매우 깊게 알아볼 필요까지는 없지만 알고있고 이해하고 있다면 많은 도움이 될 것입니다. 초기에 xml을 사용했던 기업들도 많이 있어서 xml 형식의 데이터들이 많이 포함되어 있는 개발환경도 있을 것이기 때문입니다. 이번에는 기본적으로 Spring을 사용하면 주로 생성하게 되는 Bean 객체들을 기존처럼 java 설정처럼 관리하는 것이 아닌 xml로 어떻게 관리할 수 있는지 간단하게 정리해보겠습니다. 우선 Spring 프로젝트 내에서 resources 경로에 xml ..
2023.05.31 -
@Named / @Inject (ft. CDI)
@Named / @Inject CDI (Context and Dependency Injection) 에서는 기존의 스프링에서 사용했던 어노테이션 일부를 대체할 수 있습니다. 그 중에서 대표적인 것이 @Named 와 @Inject 인데, @Named 는 @Component 를 대체할 수 있고, @Inject 는 @Autowired 를 대체할 수 있습니다. 각 대체되는 어노테이션의 용도와 뜻도 유사합니다. @Named : @Component 와 유사하게 Bean객체로 지정하는 어노테이션. @Inject : @Autowired 와 유사하게 의존성 주입 받은 객체를 자동 주입 시켜주는 어노테이션. // CDI 에서는 @Component 대신 @Named 를 대체로 사용할 수 있다. @Named class Bus..
2023.05.31 -
@PostConstruct / @PreDestroy
@PostConstruct / @PreDestroy 어플리케이션을 실행하게 되면 Spring은 자동으로 의존성을 연결하고, 의존성을 자동 연결하는 대로 가장 먼저 @PostConstruct 가 적용된 메소드를 호출합니다. @PreDestroy 는 어플리케이션이 종료될 때 마지막에 수행될 작업을 지정해주는 어노테이션이다. 기본적으로 보유하고 있었던 리소스들을 해제하는 데에 일반적으로 사용됩니다. @PostConstruct : 어플리케이션을 실행 후 의존성이 연결되는 대로 바로 가장 먼저 초기화 작업 혹은 선행 작업을 수행하려고 할 때 사용. @PreDestroy : 어플리케이션이 종료될 때, 의존성 주입받은 객체 사용이 종료될 때, 보유하고 있는 리소스들을 해제하거나 마무리 작업을 수행할 때 사용하는 어노..
2023.05.30 -
[Java] record
record record 는 java가 업데이트 됨에 따라 최근에 나온 신 기능입니다. getter, setter, 생성자를 따로 만들 필요없이 객체를 생성할 수 있도록 지원해주는 기능입니다. // 신 기능 : record // getter, setter, 생성자를 따로 만들 필요없이 지원해주는 기능 record Person (String name, int age, Address address){}; record Address (String firstLine, String city){}; @Configuration public class HelloWorldConfiguration { @Bean public Person person(){ var person = new Person("진세훈", 27, new..
2023.05.30 -
@Scope
@Scope 기본적으로 Spring에서 Bean 객체 인스턴스를 생성할 때 하나의 인스턴스만을 생성하고 그것을 재활용하는 Singleton 방식으로 운영됩니다. Bean 객체 생성 사용 방식에는 대표적으로 Singleton, Prototype이 있는데, Singleton 은 앞서 말한 것처럼 하나의 Bean 객체 인스턴스만을 생성하여 재활용하는 방식입니다. 즉, Spring IOC 컨테이너 당 객체 인스턴스가 하나만 존재합니다. Prototype 은 Bean 객체 인스턴스를 요청할 때마다 새로 생성해서 사용하는 방식입니다. 즉, Spring IOC 컨테이너 당 여러개의 객체 인스턴스가 존재할 수 있습니다. 기본적으로 Spring 은 Singleton 방식을 채택하고 있지만, 만약 Prototype으로 객..
2023.05.30 -
@Lazy
@Lazy Lazy 어노테이션은 초기화를 지연시키는 어노테이션입니다. Spring은 기본적으로 즉시 초기화를 기본값으로 가지고 있습니다. Lazy 어노테이션을 적용하게 되면 해당 클래스 객체를 사용하려고 할 때 초기화가 되어 사용되게 됩니다. // 초기화는 기본적으로 EAGER (즉시) 방식으로 된다. 어플리케이션을 실행하면 기본적으로 바로 Component 객체가 생성되고 autowiring이 되는 것이다. // @Lazy 어노테이션을 통해 초기화를 늦출 수 있다. // 지연 초기화를 적용할 경우 해당 Component 객체를 호출해줘야 그 때 초기화되고 호출된다. @Component class ClassA{ } @Component @Lazy class ClassB{ private ClassA clas..
2023.05.30