-
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) @Autowired는 byTybe 검색과정
7) @Qualifier( )과 @Resource( )
SpringDiTest.java
>> @Component가 없으므로 @Autowired는 superEngine과 turbeEgine 값만 남게 된다
>> @Qualifier(“superEgine”) 은 @Autowired가 검색할 때 superEngine을 사용하라고 지정해준다
>> @Qualifier(“superEgine”) + @Autowired 대신 @Resource(name="superEgine") 과 같이 하나의 문장으로 사용할 수 있다
>> @Qualifier(“superEgine”) + @Autowired는 byTybe으로 찾고 @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