스프링 기초 DI 예제 4


[스프링 컨테이너 생명 주기]

      

      스프링 컨테이너 생성   : GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();

       ------> 설정    :  ctx.load("classpath:baseBall.xml");

                     ctx.refresh(); 

       ------> 사용    :  Player player =ctx.getBean("player".Player.class); 

            player.getName();

            player.getPosition();

       ------> 종료    :ctx.close()



 [빈 Life cycle(생명주기)]

   

   ctx.refresh 과정에서 빈이 생성 

   

   ctx.close() 컨테이너가 소멸하는 단계에서 빈도 자동으로 소멸됩니다.

    

   InitializingBean 인터페이스 -  초기화 할때 작동

    구현해야 할 메소드

    public void afterPropertiesSet() throws Exception

   

   DisposableBean 인터페이스 -  소멸될때 작동

    public void destroy() throws Exception  

   InitializingBean, DisposableBean은 따로 구현 해도 되고, 동시에 구현해도 된다.


# 어노테이션을 활용하는 방법

    @PostConstruct

    public void initMethod(){}

     - 빈 초기화 과정에서 빈이 생성되기 전에 해야할 작업을 할 수 있다.

     

     

    @PreDestroy    

public void destroyMethod(){}

- 종료되는 시점에 빈 소멸전에 해야할 작업을 할 수 있다.

(컨테이너 안에 빈이 들어 있다.)


예제1)





   [빈의 범위(scope)]

범위는 해당하는 객체가 어디까지 영향을 미치는지 결정하는 것

<bean> 태그의 속성 값 : default 값은 singleton

  singleton : 스프링 컨테이너에 의해 한개의 빈객체만 생성

  prototype : 빈을 사용할 때 마다 객체를 생성

  request : HTTP 요청 마다 빈 객체를 생성(WebApplicationContext에서만 적용)

  session : HTTP 세션 마다 빈 객체를 생성(WebApplicationContext에서만 적용)

  global-session : 글로발 HTTP 세션에 대해 빈 객체를 생성. 





[커스텀 초기화 메소드/ 커스텀 소멸 메소드]  

:객체의 생성과 소멸시에 특정 메소드를 실행시키고 싶을 때 사용한다.  

- init-method : 커스텀 초기화 메서드를 지정하는 <bean>태그의 속성

- destroy-method : 커스텀 소멸 메서드를 지정하는 <bean>태그의 속성 

** BeanNameAware 인터페이스

: 빈객체가 자기자신의 이름을 알아야 할 경우 사용된다.

: 클래스가 BeanNameAware 인터페이스를 구현한 경우 컨테이너는 setBeanName()메서드를 호출해서 빈객체의 이름을 전달

: setBeanName(String arg) : 객체가 생성될 때 해당 객체의 id나 name값을 전달 받는 메서드



[외부 파일을 이용한 빈 설정]

 

- EnvironmentAware, Envirionment 인터페이스를 활용

 

  . Context  --> getEnvironment() -->Environment 객체 얻기

  . Environment  -->getPropertySources 객체를 얻기

  . PropertySources -->프로퍼티를 추가(addLast)하거나, 추출(getProperty) 작업을 한다.

 

 

- 프로퍼티 파일을 이용한 빈설정

 

  .XML 파일에 외부프로퍼티 파일을 명시하는 방법

 

 

  .Java 파일에 외부 프로퍼티 파일을 명시하는 방법

 

 










springDemo_2.zip


'매일코딩 > Spring' 카테고리의 다른 글

스프링 기초 DI 예제 4  (2) 2018.07.17
스프링 기초 DI 예제 3  (0) 2018.07.17
스프링 기초 DI 예제2  (0) 2018.07.16
스프링 기초 DI 예제1  (0) 2018.07.16
31.스프링프로젝트 - 조회  (0) 2016.11.21
30.스프링프로젝트 - 답변  (0) 2016.11.21
  1. 2018.08.30 15:06

    비밀댓글입니다

  2. 2018.08.31 16:55

    비밀댓글입니다

+ Recent posts

티스토리 툴바