Spring Bean
This presentation is the property of its rightful owner.
Sponsored Links
1 / 9

Spring Bean 의 Wiring 에 대한 정리 PowerPoint PPT Presentation


  • 136 Views
  • Uploaded on
  • Presentation posted in: General

Spring Bean 의 Wiring 에 대한 정리. - 스프링 빈의 의존성을 설정하는 XML 방법 - Annotation 설정. 천은진. 스프링 빈의 의존성을 설정하는 XML 방법. 생성자 방식. 생성자를 통해 의존하는 객체를 전달 받는 경우. public class WriteArticleServicempl( private ArticleDao articleDao; public WriteArticleServicempl(ArticleDao articleDao){

Download Presentation

Spring Bean 의 Wiring 에 대한 정리

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Spring bean wiring

Spring Bean의 Wiring에대한정리

- 스프링빈의의존성을설정하는 XML 방법

- Annotation 설정

천은진


Spring bean wiring

스프링빈의의존성을설정하는 XML 방법

생성자 방식

생성자를 통해 의존하는 객체를 전달 받는 경우

publicclass WriteArticleServicempl(

private ArticleDao articleDao;

public WriteArticleServicempl(ArticleDao articleDao){

this.articleDao = articleDao;

}

publicvoid write(Article article){

....

articleDao.insert(article);

}

}

<constructor-arg> 태그를 이용->의존하는 객체전달

  • <construtor-arg>

  • <value> 10 <value/>

  • </construtor-arg>

    • <construtor-arg value “10”/>

  • <beanname = "writeArticleService"

  • class ="madvirus.spring.WriteArticleServicelmpl"/>

  • <construtor-arg>

  • <refbeen = "articleDao"/>

  • </construtor-arg>

    • <construtor-arg refbeen = "articleDao"/>

  • </bean>


  • Spring bean wiring

    스프링빈의의존성을설정하는 XML 방법

    프로퍼티 설정 방식

    • setXXXX()형태의 설정 메서드를 사용해서 필요한 객체와 값을 전달 받음

    publicclass WriteArticleServicempl implement WriteArticleService(

    private ArticleDao articleDao;

    publicvoidsetArticleDao(Article articleDao){

    this.articleDao = articleDao;

    }

    }

    • setXXXX()형태의 메서드에서 프로퍼티 이름은 XXXX가 됨

    <beanname = "writeArticleService"

    class ="madvirus.spring.WriteArticleServicelmpl"/>

    <propertyname = "articleDao">

    <refbeen = "mysqlArticleDao"/>

    </property>

    </bean>


    Spring bean wiring

    스프링빈의의존성을설정하는 XML 방법

    XML 네임스페이스를 이용

    •<property>태그를 사용하지 않고 좀 더 간단히 설정

    <beansxmlns="http://www.springframework.org/schema/beans"

    xmlns:p="http://www.springframework.org/schema/p"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <beanid="monitor"class = "SystemMonitor"

    p:periodTime = "10"

    p:sender-ref = "smsSender"

    />

    </bean>

    <beanid="smsSender"class ="SmsSender"

    />

    </beans>


    Spring bean wiring

    Annotation 설정

    @Required

    • org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor

    • 필수 프로퍼티를 명시할 때 사용

    • 지정하려면 먼저 프로퍼티 설정 메서드에 @Required을 선언

    package com.cejing.ex;

    publicclass Camera {

    privateintnumber;

    @Required

    publicvoid setNumver(int number){

    this.number =number;

    }

    }

    <beanclass = "org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>

    <beanid="camera"class = "Camera"/>

    <!-- number 프로퍼티에 @Required 어노페이션 적용

    따라서 , number 프로퍼티를 설정하지 않을 경우 예외 발생 -->

    <propertyname ="number"value="1"/>

    </bean>


    Spring bean wiring

    Annotation 설정

    @Required

    <?xmlversion="1.0"encoding="UTF-8"?>

    <beansxmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:p="http://www.springframework.org/schema/p"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <context:annotation-config/>

    </beans>

    <context:annotation-config>

    - RequiredAnnotationBeanPostProcessor : @Required 어노테이션 처리

    - AutoWiredAnnotationBeanPostProcessor : @Autowired 어노테이션 처리

    - CommonAnnotationBeanPostProcessor : @Resource, @PostConstruct, @PreDestroy 어노테이션 처리

    - ConfigurationClassPostProcessor : @Configuration 어노테이션 처리


    Spring bean wiring

    Annotation 설정

    @Autowired

    • org.springframework.beans.factory.annotation.AutowiredAnnotationBeanProcessor

    • 프로퍼티 자동 설정 기능을 제공

    • 생성자, 필드, 메서드의 세 곳에 적용 가능

    @Autowired(required=false)

    여러 개의 생성자에 @Autowired 어노테이션을 적용할 때에는 한 개의 생성자에 적용된 @Autowired 어노테이션만 required 속성값이 true여야 하며 나머지 생성자에 적용되는 @Autowired 어노테이션의 required 속성값은 false이어야 한다


    Spring bean wiring

    Annotation 설정

    @Qualifier

    • org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor

    • @Autowired 어노테이션과 함께 사용

    • 자동 연결될 빈 객체의 수식어를 값으로 갖는다

    package com.cejing.ex;

    publicclass Camera implementsCamera{

    @Autowired

    @Qualifier("main")

    privateintnumber;

    }

    <beanid="camera"class = "Camera"/>

    <qualifiervalue ="main"/>

    </bean>


    Spring bean wiring

    Annotation 설정

    • org.springframework.beans.factory.annotation.CommonAnnotationBeanPostProcessor

    @Resource

    • javax.annotation 패키지에 위치

    • 필요로 하는 자원을 자동 연결할 때 사용

    @PostConstruct / @PreDestroy

    • • @PostConstruct 의존하는 객체를 설정한 이후에

      • 초기화 작업을 수행할 메서드에 적용

    • • @PreDestroy 컨테이너에서 개게를 제거하기 전에 호출 될 메서드에 적용

    • -> 스프링 설정 파일에서 init-mehtod 속성과 destroy-method속성을 이용하여

    • 명시한 메서드와 동일한 시점에서 실행


  • Login