IoC 컨테이너의 핵심 인터페이스인 ApplicationContext의 상위 인터페이스인 ResourceLoader에 대해서 정리해보자. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver 여기서 ResourcePatternResolver의 상위 인터페이스가 ResourceLoader이다. public interface ResourcePatternResolver extends ResourceLoader ResourceLoader 인터페이스는 말 ..
이번에 다뤄볼 ApplicationEventPublisher도 ApplicationContext의 상위 인터페이스이다. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver ApplicationEventPublisher는 이벤트 프로그래밍을 할 때 유용한 인터페이스이다. MyEvent 클래스 import org.springframework.context.ApplicationEvent; public class MyEvent extends Applic..
이번에는 저번에 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..