스프링 기초 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

    비밀댓글입니다

스프링 기초 DI 예제2


코드의 변경 없이 xml 설정만으로 개발자가 원하는 객체의 주입으로 바꿀 있음.

   

   

   [의존성 주입 종류]

    setter(설정 메소드) 이용한 주입 

    : 설정 메소드를 사용해서 의존성을 주입하는

    

    Constructor(생성자) 통한 주입

    : 생성자를 사용해서 의존성을 주입하는

   

   

   [의존성 주입(DI) 장점]

DI 사용하면 개발 계획시에 시간이 요구가 되지만, 규모가 프로젝트에서 유지보수 업무를 

한다면 DI 개발의 장점을 느낄 있다.  




예제1)















예제2)





















'매일코딩 > 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

스프링 기초 DI 예제1



스프링 프레임워크 특징 1


* 먼저 스프링 프레임워크는 자바언어를 기반으로 한 어플리케이션을 만들때 효율적으로 빠르게 제작할 수 있도록 하는 프로그래밍 툴이다.

* 스프링은 자바의 객체를 담고 있는 컨테이너다.

* 객체의 생성, 소멸과 같은 생명주기를 관리한다.

* DI(의존성 주입패턴)을 지원한다.

* AOP, 트랜잭션이나, 로깅, 보안과 같은 엔터프라이즈 어플리케이션에서 공통으로 필요로 하는 기능을 분리해서 각모듈에 적용할 수 있도록 하는 기능을 제공한다.

* 스프링은 POJO를 지원한다. 즉 특정 인터페이스나 클래스를 상속받지 않는 순수한 자바 객체를 스프링 컨테이너가 저장하고 있다.

* 트랜잭션 처리를 위한 일관된 방식을 제공한다.

* 영속성과 관련된 다양한 API를 제공한다.

* Mybtis, JPA, JDBC 등과 같은 프레임워크와의 연동을 지원한다.


DI(의존성주입)

DI 스프링의 핵심 개념 중의 하나이다.

객체 사이의 의존 관계를 객체 자신이 아닌 외부(스프링 컨테이너)에서 수행하는 개념

* 의존관계의 설정은 설정파일(bean.xml)이나 어노테이션을 이용하여 설정 한다.


예1)

프로젝트 생성


test.xml에 bean을 통해서 TestDAOImp 객체를 만들었다.




인터페이스 메소드 구현


인터페이스




예2) DI 예제



bean으로 객체 생성 -> myGetSum이 GetSum 참조 -> property name 을 이용해서 MyGetSum setter 함수에 값을 할당 했다.







예3) 생성자를 통해서 값 주입하기




예4)















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

스프링 기초 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
29.spring- detgul  (0) 2016.11.18

+ Recent posts