ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 03 Spring DI 활용하기-실습
    Spring/02 Spring DI와 AOP 2023. 6. 23. 23:19
    반응형

    pring DI 활용하기-실습

    config.xml (resources config.xml 작성

    싱글톤: 클래스의 객체를 하나만 생성

    >> scope를 생략하면 디폴트 값(scope="singleton")으로 입력

    >> getBean( )할 때마다 새로운 객체가 만들어 지길 원하면 scop="prototype"

     

     

     

    SpringDiTest.java

     

     

    SpringDiTest.java

    >> 을 주석처리 후, config.xml에서 <property>를 사용하여 값을 입력

     

     

     

    1) config.xml <property> : 속성

    >> value는 기본값만 알아서 class car의 타입의 String 이나 int값으로 변환시켜준다

    >> Setter가 있어야 사용 가능하다 <property> 태그가 Setter를 사용

     

     

    주석 처리 후 결과값

    >> cofig.xml을 사용하면 변경사항이나 코드의 재사용에 유리

     

     

     

    2) config.xml <constructor-arg> : 생성자

    >> <constructor-arg>생성자가 있어야 사용 가능하다

     

     

    SpringDiTest.java

     

     

     

    3) config.xml <context:component-scan>

     

     

    SpringDiTest.java

    >> Setter 사용

    >> config.xml<context:component-scan> 등록하고 @Component를 주입

    >> @Component가 주입된 클래스를 찾아 첫글자를 소문자로 변환하여 객체로 저장(key 값)

     

     

     

    4) config.xml <context:annotation-config/>

    >> <context:annotation-config/>를 등록해야 @Autowired을 사용할 수 있지만,

          <context:component-scan>만 등록해도 @Autowired를 사용 할 수 있다

     

     

    SpringDiTest.java

    >> @Value는 객체의 값을 넣어준다 (타입을 자동변환)

     

     

     

    5) byTybe - 단점

    SpringDiTest.java

    >> expected single matching been : 메칭되는 bean 하나를 예상 했는데

    >> but found 3 : 그런데 3개나 발견했다 engine, superEngine, turbeEngine

    >> 타입이 여러개 일 때는 byTybe으로 찾는 것 보다 byName이 정확하다

     

     

     

    6) @AutowiredbyTybe 검색과정

     

     

    7) @Qualifier( )@Resource( )

    SpringDiTest.java

    >> @Component가 없으므로 @AutowiredsuperEngineturbeEgine 값만 남게 된다

    >> @Qualifier(“superEgine”) @Autowired가 검색할 때 superEngine을 사용하라고 지정해준다

    >> @Qualifier(“superEgine”) + @Autowired 대신 @Resource(name="superEgine") 과 같이 하나의 문장으로 사용할 수 있다

    >> @Qualifier(“superEgine”) + @AutowiredbyTybe으로 찾고 @Qualifier(“superEgine”)으로 확인

    >> @Resource(name="superEgine")byName으로 찾는다

    >> 주로 @Autowired가 많이 사용된다

     

     

     

     

     

    반응형

    'Spring > 02 Spring DI와 AOP' 카테고리의 다른 글

    06 Spring으로 DB연결하기  (0) 2023.06.30
    05 Spring DI 활용하기(2) - 이론  (0) 2023.06.28
    04 Spring DI 활용하기(1) - 이론  (0) 2023.06.26
    02 Spring DI 흉내내기(2)  (0) 2023.06.22
    01 Spring DI 흉내내기(1)  (0) 2023.06.21
Designed by Tistory.