[SPRING] @Autowired 주석은 속성 또는 메소드로 이동해야합니다.
SPRING@Autowired 주석은 속성 또는 메소드로 이동해야합니다.
어느 것이 더 정확합니까?
이 메소드 (@Autowired 어노테이션과 함께)?
@Controller
public class MyController
{
private MyDao myDao;
@Autowired
public MyController(MyDao myDao)
{
this.myDao = myDao;
}
이 속성 (속성의 @Autowired 주석 포함)?
@Controller
public class MyController
{
@Autowired
private MyDao myDao;
public MyController(MyDao myDao)
{
this.myDao = myDao;
}
@Autowired 주석은 어디에 있어야하나요?
해결법
-
==============================
1.Autowired 용 Javadoc에 따르면, 주석은 "생성자, 필드, 설정 메소드 또는 구성 메소드"에서 사용될 수 있습니다. 자세한 내용은 전체 설명서를 참조하십시오.
Autowired 용 Javadoc에 따르면, 주석은 "생성자, 필드, 설정 메소드 또는 구성 메소드"에서 사용될 수 있습니다. 자세한 내용은 전체 설명서를 참조하십시오.
개인적으로 myDao 필드를 final로 표시 할 수 있으므로 첫 번째 옵션 (생성자 삽입)을 선호합니다.
@Controller public class MyControllear { private final MyDao myDao; @Autowired public MyController(MyDao myDao) { this.myDao = myDao; }
생성자 삽입을 사용하면 Spring에 의존하는 코드없이 단위 테스트에서 클래스를 테스트 할 수 있습니다.
두 번째 옵션은 다음과 같이 작성하는 것이 좋습니다.
@Controller public class MyControllear { @Autowired private MyDao myDao; MyController() { }
필드 주입을 사용하면 Spring은 객체를 생성 한 다음 주입을 위해 표시된 필드를 업데이트합니다.
당신이 언급하지 않은 한 가지 옵션은 @Autowired를 setter 메소드 (setter injection)에 두는 것입니다.
@Controller public class MyControllear { private MyDao myDao; MyController() { } @Autowired public void setMyDao(MyDao myDao) { this.myDao = myDao; }
당신은 하나 또는 다른 것을 선택할 필요가 없습니다. 필드 삽입을 일부 종속성에 대해 사용하고 생성자 주입을 다른 객체에 대해 동일한 객체에 사용할 수 있습니다.
-
==============================
2.어설 션은 속성과 함께 사용됩니다. 자동적으로 설정되는 프롭퍼티 이 자습서에는 좋은 예가 있습니다. 이 고급 예제는 한정자를 사용하여 배선을 모호하게 만드는 방법을 보여줍니다.
어설 션은 속성과 함께 사용됩니다. 자동적으로 설정되는 프롭퍼티 이 자습서에는 좋은 예가 있습니다. 이 고급 예제는 한정자를 사용하여 배선을 모호하게 만드는 방법을 보여줍니다.
from https://stackoverflow.com/questions/3746574/where-is-the-autowired-annotation-supposed-to-go-on-the-property-or-the-metho by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MVC에서 전역 사용자 정의 편집기를 등록하려면 어떻게해야합니까? (0) | 2018.12.23 |
---|---|
[SPRING] JSON을 생성하고 소비하는 컨트롤러 용 Spring RequestMapping (0) | 2018.12.23 |
[SPRING] 타사 프레임 워크에서 log4j 메시지 필터링 (0) | 2018.12.23 |
[SPRING] Jetty가 "정적"페이지를 동적으로로드하도록 만드는 방법 (0) | 2018.12.23 |
[SPRING] 스프링 보안에서 새로운 PasswordEncoder를 사용하는 방법 (0) | 2018.12.23 |