주석을 사용하여 IOC 컨테이너를 구성하십시오
주석을 사용하여 스프링 컨테이너에 콩을 등록하십시오. ApplicationContext.xml에 등록해야합니다. Context : Component-Scan Base-Package =”Pagkage1 [, Pagkage2,…, Pagkagen]”/>.
예를 들어 : 기본 패키지로 패키지를 지정하십시오
<Context : Component-Scan Base-Package = "Cn.gacl.java"/>
클래스에 cn.gacl.java 패키지에 특정 주석 [@component/@repository/@service/@controller]이있는 경우이 개체는 스프링 컨테이너에 Bean으로 등록됩니다. <context : component-scan base-package = ""/>에서 여러 패키지를 지정할 수도 있습니다.
<context : component-scan base-package = "cn.gacl.dao.impl, cn.gacl.service.impl, cn.gacl.action"/>
여러 패키지가 쉼표로 구분됩니다.
1. @Component
@요소
모든 스프링 관리 구성 요소에 대한 일반적인 형태입니다. @Component 주석은 클래스 헤드에 배치 할 수 있으며 @Component는 권장되지 않습니다.
2. @Controller
@Controller는 프리젠 테이션 계층의 Bean, 즉 동작에 해당합니다.
@Controller @Scope ( "프로토 타입") 공개 클래스 사용자 ActorAction은 BASEEACTION <USER> {...}을 확장합니다.@Controller 주석을 사용하여 사용자 ActionAction을 식별 한 후 사용자 Actions는 관리를 위해 Spring 컨테이너에 양도되어야 함을 의미합니다. 스프링 컨테이너에는 "UserAction"이라는 동작이 있습니다. 이 이름은 useraction 클래스 이름을 기반으로합니다. 참고 : @Controller가 해당 값을 지정하지 않으면 【@controller】】이면 클래스 이름의 첫 글자에서 기본 콩 이름이 소문자입니다. 값을 지정하면 value @controller (value = "userAction")】 또는 【@controller ( "UserAction")】】를 지정하면 값을 Bean 이름으로 사용하십시오.
여기서 사용자 Action은 @Scope 주석도 사용합니다. @Scope ( "프로토 타입")는 동작의 범위가 프로토 타입으로 선언되었음을 의미합니다. 컨테이너의 스코프 = "프로토 타입"을 사용하여 각 요청에 스레드 안전 문제를 피하면서 각 요청에 따라 처리 할 수있는 별도의 조치가 있는지 확인할 수 있습니다. 스프링 기본 범위는 싱글 톤 모드 (scope = "Singleton")이며 액션 객체 만 생성합니다. 각 액세스는 동일한 동작 객체입니다. 데이터는 안전하지 않습니다. Struts2는 각 액세스가 다른 동작에 해당해야합니다. SCOPE = "프로토 타입"은 요청이있을 때 동작 객체가 생성되도록 할 수 있습니다.
3. @ 서비스
@Service는 예를 들어 서비스 계층 Bean에 해당합니다.
@Service ( "userService") public class usererviceimpl은 userervice {……}를 구현합니다.@Service ( "userService") 주석은 Spring이 Spring이 userErviceImpl의 인스턴스를 생성하기를 원할 때 Bean 이름을 "usererVice"라고해야한다고 말합니다. 이런 식으로, 작업이 usererviceimpl의 인스턴스를 사용해야 할 때, Spring에 의해 생성 된 "userservice"는 작업에 주입 될 수 있습니다. 행동하면 Spring에 의해 주입 된 "userservice"를 받으려면 "userservice"라는 변수 만 선언하면됩니다. 특정 코드는 다음과 같습니다.
// userErvice @Resource를 주입합니다 (name = "usererVice") private userErvice userErvice;
참고 : 조치에서 선언 된 "사용자 서비스"변수의 유형은 "usererviceimpl"또는 상위 클래스 "uservice"이어야하며, 그렇지 않으면 일관되지 않은 유형으로 인해 주입 할 수 없습니다. 이 작업에서 선언 된 "사용자 서비스"변수는 @Resource 주석을 사용하고 이름 = "userService"를 표시하기 때문에 Spring에게 "UsersErvice"를 인스턴스화하고 싶다고 말하는 것과 같습니다. Spring은 내가 빨리 인스턴스화하는 데 도움이 된 다음 나에게 제공 할 것입니다. Spring이 지정된 이름 속성에 따라 UserserVice 변수에서 @Resource 주석을 보면 userViceimpl의 인스턴스를 동작에 사용해야한다는 것을 알 수 있습니다. 이 시점에서 Spring은 조치가 사용자 서비스의 인스턴스화를 완료하는 데 도움이되도록 조치의 "userService"라는 usererviceimpl의 인스턴스를 사용하여 "usserVice userservice = new UserserViceImpl ()"을 사용할 필요가 없습니다. 이것은 사용자 서비스를 인스턴스화하는 가장 원시적 인 방법입니다.
스프링이없는 경우 작업에서 userErviceImpl을 사용해야 할 때 "usererVice userErvice = new UserserViceImpl ();"를 통해 인스턴스 객체를 활성으로 작성해야합니다. 그러나 Spring을 사용한 후 Action이 userServiceimpl을 사용하려는 경우 usererviceimpl 인스턴스를 적극적으로 만들 필요가 없습니다. userviceimpl 인스턴스 생성이 스프링으로 넘겨졌습니다. Spring은 생성 된 usererviceimpl 인스턴스를 조치에 제공하며 작업을받은 후에 직접 사용할 수 있습니다.
동작은 usererviceimpl 인스턴스를 적극적으로 생성 한 직후에 사용될 수 있지만, Spring을 수동적으로 대기하여 userserviceimpl 인스턴스를 생성하기 전에 행동에 주입합니다.
이것은 "usererviceimpl"클래스에 대한 Action의 "Control"이 "반전"되었음을 보여줍니다. 이니셔티브는 내 자신의 손에있는 것으로 밝혀졌습니다. "usererviceimpl"클래스 인스턴스를 사용해야합니다. 나는 그것을 즉시 사용하기 위해 이니셔티브를 취할 수 있습니다. 그러나 이제 나는 "userviceimpl"클래스 인스턴스의 새로운 사례에 대한 주도권을 잡을 수 없습니다. 새로운 "userserviceimpl"클래스 인스턴스의 힘은 스프링에 의해 제거되었습니다. Spring만이 "usererviceimpl"클래스 인스턴스의 새로운 인스턴스 만 할 수 있고, action은 rviceimpl "클래스 인스턴스" "" "spring"이 "userserviceimpl"클래스의 생성 인스턴스를 제공하여 "userserviceimpl"의 핵심 아이디어 "라고 불리는"의존적 주입 "이라고 불릴 수 있습니다. userviceimpl은 userviceimpl에 대한 의존성을 만듭니다.
4. @ 리포지토리
@repository는 예를 들어 데이터 액세스 계층 Bean에 해당합니다.
@repository (value = "userDao") public class userDaoimpl은 basedaoimpl <user> {………} 확장됩니다.@Repository (value = "userDao") 주석은 Spring에게 Spring에 "userDao"라는 userDaoimpl 인스턴스를 만들도록 지시합니다.
서비스가 Spring에서 만든 "UserDao"라는 사용자 daoimpl 인스턴스를 사용해야하는 경우 @Resource (name = "userDao") 주석을 사용하여 스프링을 알리고 Spring은 생성 된 userDAO를 서비스에 주입 할 수 있습니다.
// userDAO를 주입하고 사용자 ID에 따라 데이터베이스에서 지정된 사용자를 꺼내면 @Resource (name = "userDao") private basedao <user> userDao를 사용해야합니다.
@Resource, @autowired 및 @Qualifier는 모두 개체를 주입하는 데 사용됩니다. 그중에서도 @Resource는 이름 또는 유형으로 주입 될 수 있으며 @autowired는 유형으로 만 주입 할 수 있으며 @Qualifier는 이름으로 만 주입 될 수 있습니다.
그러나 그들은 몇 가지 미묘한 차이점이 있습니다.
1. @Resource 및 @Qualifier는 기본적으로 ByName에 의해 자동으로 주입되며 @autowired는 기본적으로 ByType에 의해 자동으로 주입됩니다.
2. @Resource에는 이름과 유형이 더 중요한 두 가지 속성이 있습니다. 이름 속성이 사용되면 ByName의 자동 분사 정책이 사용됩니다. 유형 속성을 사용하면 Bytype 자동 주입 정책이 사용됩니다.
3. @Resources는 JDK가 제공하는 주석이며 @autowired는 Spring에서 제공하는 주석입니다.
@Resource를 @autowired @qualifier, haha의 보스로 취급 할 수 있습니다. 나는 당신이 가진 것을 가지고 있고 당신이 가지고 있지 않은 것을 가지고 있고 나도 가지고 있습니다 ~
@Resource, @autowired 및 @Qualifier는 모두 개체를 주입하는 데 사용됩니다. 그중에서도 @Resource는 이름 또는 유형으로 주입 될 수 있으며 @autowired는 유형으로 만 주입 할 수 있으며 @Qualifier는 이름으로 만 주입 될 수 있습니다.
그러나 그들은 몇 가지 미묘한 차이점이 있습니다.
1. @Resource 및 @Qualifier는 기본적으로 ByName에 의해 자동으로 주입되며 @autowired는 기본적으로 ByType에 의해 자동으로 주입됩니다.
2. @Resource에는 이름과 유형이 더 중요한 두 가지 속성이 있습니다. 이름 속성이 사용되면 ByName의 자동 분사 정책이 사용됩니다. 유형 속성을 사용하면 Bytype 자동 주입 정책이 사용됩니다.
3. @Resources는 JDK가 제공하는 주석이며 @autowired는 Spring에서 제공하는 주석입니다.
@Resource를 @autowired @qualifier, haha의 보스로 취급 할 수 있습니다. 나는 당신이 가진 것을 가지고 있고 당신이 가지고 있지 않은 것을 가지고 있고 나도 가지고 있습니다 ~
위의 일반적인 스프링 주석은 IOC 컨테이너를 구성하기 위해 주석을 사용하는 방법은 내가 공유 한 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.