이번에는 저번에 EnvironmentCapable에 이어서 MessageSource라는 것에 대해서 정리해보려 한다. 이것도 역시 ApplicationContext가 상속받고 있는 인터페이스 중에 하나이다. MessageSource는 메세지를 다국화 하는 인터페이스이다. 메세지 설정 파일을 모아놓고 각 국가마다 로컬라이징을 함으로서 쉽게 각 지역에 맞춘 메세지를 제공할 수 있다. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver 그래서 이번엔 ..
2. 프로퍼티(Properties)란? 다양한 방법으로 정의할 수 있는 설정값 Environment의 역할은 프로퍼티 소스 설정 및 프로퍼티 값 가져오기 같은 이름의 프로퍼티가 있을 경우 가장 우선순위가 높은 프로퍼티 설정값으로 사용함 프로퍼티에는 우선 순위가 있다. ServletConfig 매게변수 ServletContext 매개변수 JNDI(java:comp/env/) JVM 시스템 프로퍼티(-Dkey="value") JVM 시스템 환경 변수(운영 체제 환경 변수) 위에서 설명했던 것 처럼 Edit DemoApplication을 들어가서 VM options에 -Dapp.name=spring5 라는 값을 입력하자. import org.springframework.beans.factory.annotati..
/** https://devlog-wjdrbs96.tistory.com/169?category=882236 그대로 복사했습니다. */ 저번 글에서 IoC 컨테이너의 핵심적인 인터페이스 중에 하나가 ApplicationContext라고 정리했었다. ApplicationContext는 BeanFacotry의 기능만을 하는 것이 아니라 다른 여러 기능들을 가지고 있다. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver { 예를들면 위와 같이 상속받는..
빈의 스코프에 대해서 정리해보려 하는데 스프링 IoC 컨테이너에 빈으로 등록이 되면 싱글톤으로 관리를 한다. 싱글톤이란 객체를 한번만 만들어서 사용한다는 것이다. 코드를 예시를 들어서 확인해보자. singleton : 기본(Default) 싱글톤 스코프. 하나의 Bean 정의에 대해서 Container 내에 단 하나의 객체만 존재한다. prototype : 어플리케이션에서 요청시 (getBean()) 마다 스프링이 새 인스턴스를 생성 싱글톤 패턴 - https://joinwithyou.tistory.com/19 (참조) import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Ser..
/** https://devlog-wjdrbs96.tistory.com/167?category=882236 그대로 복사했습니다*/ 1. ComponentScan import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } 여기서 @SpringBootApplication의 어노테이션을 타고..
의존성 주입과 빈 등록은 다른 것이다. IoC 컨테이너에 빈으로 등록이 되어야 의존성 주입을 할 수 있다. setter와 생성자를 통해서 IoC/DI로 의존성을 주입하였는데 이번에는 @Autowired라는 어노테이션을 이용해서 의존성을 주입하는 것에 대해 알아보려 한다. # @Autowired란? 필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 의존성을 주입한다. 생성자 setter 필드 [ 1. 생성자 주입(Constructor Injection) ] @Service public class UserServiceImpl implements UserService { private UserRepository userRepository; private MemberService memberService; @A..
# 빈을 등록하는 방법 빈을 등록하는 방법에는 2가지 방법이 있다. 더보기 1. xml 설정파일을 통한 등록 2. Java 코드를 이용해서 Bean 등록 최근에는 xml 설정파일을 통한 등록보다는 Java 코드를 이용해서 Bean을 등록한다고 한다. xml을 통한 방법을 이해하고 싶은 분들은 "스프링 입문을 위한 자바 객체 지향의 원리와 이해" 책을 참고하도록 하자! 1. xml 설정파일을 통한 등록 public class DemoApplication { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("application.xml"); String[] getBean..
# 컨테이너란? 컨테이너는 보통 인스턴스의 생명주기를 관리하고 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것이라고 한다. 즉, 컨테이너는 코드의 처리과정을 위임받은 독립적인 존재이다. 컨테이너는 누구의 도움없이도 프로그래머가 장석한 코드를 스스로 참조한 뒤 알아서 객체의 생성과 소멸을 관리해 주는 역할을 한다. # IoC 컨테이너란? 컨테이너의 사전적 의미는 무언가를 담는 용기, 그릇이다. 스프링 컨테이너는 프로그래머가 작성한 코드의 처리과정을 위임받아 독립적으로 처리하는 존재이다. IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다. POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가지기 때문에 개발자는 직접 POJO를 생성할 수 있지만 컨테이너에게 역할을 맡긴다. > Bea..