2017-04-21 3 views
3

나는 봄에 익숙하지 않다.Spring @Autowired Annotation과 ContextComponent @autowired annotation의 스캔과 객체들

나는 @Autowired 주석을 이해하고 그것을 사용하기 위해. 나는 우리가 을 사용해야한다는 것을 배웠다. 1) context : annotation-config 또는 2) AutowiredAnnotationBeanPostProcessor. 그러나 샘플 프로젝트를 보았을 때 아무것도 찾지 못했습니다. 위에서 언급 한 것들을 사용하는 것은 필수입니다. 내가 테스트 한 독립 실행 형 응용 프로그램에서 우리가 공공 정적 무효 메인 (문자열을 [사용하고 있기 때문에


나는 우리가 서버에 우리의 web.xml에를 배포 할 때 @Autowired 어노테이션 개체를 만들 것이라고 생각하고있다] args)은 빈 클래스를 호출합니다. 그러나 웹 프로젝트에서 우리는 web.xml을 서버에 deploy하거나 spring 설정을 포함하고있는 application.xml을 deploy 할 때 그런 것을 만들지 않을 것입니다.

위의 2 가지 상상력에 대한 이해가 정확합니까?

도와주세요.

+0

당신은'jvisualvm.exe'를 사용하여 확인할 수 있습니다 –

+0

무엇이 jvisualvm.exe입니까 ??? – jack0989

+0

Google은 무엇입니까? Google은 "jvisualvm.exe 무엇입니까" –

답변

1

xml 파일을 사용할 때 각각의 종속성을 위해 PostProcessor Bean을 추가해야합니다. 이 경우 건너 뛸 수 있습니다.

<context:annotation-config/> 

이렇게하면 annotationPostProcessors를 추가 할 필요가 없습니다. 여기에는 모두 포함됩니다.

두 번째로, Autowire 주석을 사용하면 유형별로 자동 배선됩니다. 초기화하는 동안이 필드의 값을 설정한다는 것을 봄에 알리고 있습니다.

은 일반적으로 당신이 할 필요하면 응용 프로그램의 주에서,

  1. ApplicationContext를 가져 오기 때문이다.
  2. ApplicationContext를 사용하여 XML에서 requiredBean을 가져옵니다.
  3. 서비스 클래스에서 bean을 설정하십시오.

서비스 클래스에서 Bean을 Autowiring하면 위의 단계를 건너 뛸 수 있습니다. 이해했다면 알려주세요.

+0

설명 주셔서 감사합니다, 내가 처음으로 이해, 하지만 두 번째 .yes에 대해서는 독립 실행 형 응용 프로그램에서 이러한 3 단계가 있습니다.하지만 웹 프로젝트에서는 autowired 만 있고 applicationcontext를 얻지는 않으며 필요한 bean과 모든 것을 얻는 것입니다. 하고있는 것은 – jack0989

+0

@autwired private Employee employee; employee.findEmployeeByid (긴 ID); 그래서이 객체가 언제 만들어 지는지 알고 싶었습니다. 서버에 이것을 배치 할 때 생성됩니다. (web.xml 또는 applicationcontext.xml) – jack0989

+0

이 Employee는 스프링 저장소이고, 이것을 연결하여 일부 엔티티 클래스에서 데이터를 가져옵니다. 따라서 응용 프로그램을 시작할 때 모든 서비스, 저장소, 구성 요소, 클래스가 봄에 호출됩니다. 이 시점에서 객체가 설정됩니다.따라서 서블릿 컨테이너를 배포하고 시작할 때 모든 자동 종속 종속성이 설정됩니다. –