Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- snmp
- c3 축 없애기
- subporcess path
- semanage
- linux시간으로 변경
- 백준
- c3 축 가리기
- c3 step graph
- g++ 업데이트
- telegraf
- 정규식 컴파일
- influxdb 설치
- gcc 업데이트
- python os
- gcc regex
- snmp test
- centos pyhon 설치
- 1697
- InfluxDB
- c3 second
- c3 초
- python subprocess
- 정규식 문자열 출력
- CentOS7
- python popen
- c++ 정규식
- selinux port 등록
- grafana dashboard
- regex_search
- 정규식 활용
Archives
- Today
- Total
리셋 되지 말자
스프링을 통한 의존성 주입 - @Autowired vs. @Resource vs. <property> 태그 본문
Java(폐지)/spring 책
스프링을 통한 의존성 주입 - @Autowired vs. @Resource vs. <property> 태그
kyeongjun-dev 2020. 8. 12. 16:45@Autowired | @Resource | |
---|---|---|
출처 | 스프링 프레임워크 | 표준 자바 |
소속 패키지 | import org.springframework.beans.factory.annotation.Autowired; | import javax.annotation.Resource; |
빈 검색 방식 | byType 먼저, 못 찾으면 byName | byName 먼저, 못 찾으면 byType |
특이사항 | @Qualifier("") 협업 | name 어트리뷰트 |
byName 강제하기 | @Autowired @Qualifier("tire1") | @Resource(name="tire1") |
예시 코드
- Car.java (@Resource의 byName 강제)
ppackage expert006;
import javax.annotation.Resource;
public class Car {
@Resource(name="tire1")
Tire tire;
public String getTireBrand() {
return "장착된 타이어: " + tire.getBrand();
}
}
- Car.java (@Autowired의 byName 강제)
package expert006;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
public class Car {
@Autowired
@Qualifier("tire1")
Tire tire;
public String getTireBrand() {
return "장착된 타이어: " + tire.getBrand();
}
}
뭐가 더 나을까
스프링이 아닌 다른 프레임워크로 교체되는 경우를 대비하자면 자바 표준인 @Resource를 쓰는게 @Autowired를 쓰는 것보다 낫다.
@Resource는 bean 태그의 자식 태그인 property로 해결될 수 있다. 여기서는 XML파일만 보아도 DI 관계를 손쉽게 확인할 수 있는 property를 사용하는게 좋다.
@Resource는 개발 생산성이 좋고 property는 유지보수성이 좋다.
하지만 유지보수가 필요 없다면 @Resource를 쓰는게 바람직하다.
의존 관계
의존 관계가 new가 아니더라도 변수에 = 으로 대입되는 순간 의존 관계가 생긴다.(객체가 대입되던 리터럴 값이 대입되던)
이때 대입되는 의존 대상이 외부에 있을수도 내부에 있을수도 있다. DI는 외부에 있는 의존 대상을 주입하는 것이다.
의존 대상을 구현하고 배치할 때 SOLID와 응집도는 높이고 결합도는 낮추라는 기본 원칙에 충실해아 한다.
그래야 프로젝트의 구현과 유지보수가 수월해진다.
'Java(폐지) > spring 책' 카테고리의 다른 글
PSA - 일관성 있는 서비스 추상화 (0) | 2020.08.13 |
---|---|
AOP(Aspect-Oriented Programming) (0) | 2020.08.13 |
스프링을 통한 의존선 주입 - @Resource를 통한 속성 주입 (0) | 2020.08.12 |
스프링을 통한 의존성 주입 - @Autowired를 통한 속성 주입 (0) | 2020.08.12 |
스프링을 통한 의존성 주입-스프링 설정 파일(XML)에서 속성 주입 (0) | 2020.08.12 |
Comments