학습 스프링 노트주석(주석)Autowired_Qualifier
<?xml version="1.0" encoding="UTF-8"?>
<!-- spring -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config />
</beans> 코드 설명:
beans 태그 에 xmlns:context="를 추가 해 야 합 니 다.http://www.springframework.org/schema/context속성http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd속성
네 가지 유형 은 Autowired Annotation BeanPostProcessor,CommonAnnotation BeanPostProcessor,Persistence Annotation BeanPostProcessor,as well as the foreremented Required Annotation BeanPostProcessor 이다.
Spring 프레임 워 크 에서@Autowired 탭 을 사용 할 때 기본적으로@Autowired 주석 을 사용 하여 자동 으로 주입 할 때 Spring 용기 에 일치 하 는 후보 Bean 수 는 하나 여야 합 니 다.일치 하 는 Bean 을 찾 을 수 없 을 때,Spring 용 기 는 BeanCreation Exception 이상 을 던 지고,최소한 일치 하 는 Bean 을 가 져 야 한다 고 지적 합 니 다.@Autowired 가 자동 으로 주입 하 는 정책 은 기본적으로 by Type 입 니 다.Spring 용기 에 두 개 이상 의 Bean 이 일치 하면 이상 을 던 집 니 다.Spring 은@Qualifier 주석 을 통 해 Bean 을 주입 하 는 이름 을 지정 할 수 있 도록 합 니 다.그러면 잘못된 의 미 는 제거 되 고 아래 의 방법 으로 이상 을 해결 할 수 있 습 니 다.
@Qualifier("XXX")의 XX 는 Bean 의 이름 이기 때문에@Autowired 와@Qualifier 를 결합 하여 사용 할 때 자동 으로 주입 하 는 정책 이 by Type 에서 by Name 으로 바 뀌 었 습 니 다.
@Autowired 는 구성원 변수,방법 및 구조 함수 에 대해 설명 할 수 있 으 며,@Qualifier 의 레이 블 대상 은 구성원 변수,방법 입 참,구조 함수 입 참 입 니 다.
@Autowired 가 set 방법 에 쓰 여 있다 면@Qualifier 는 인자 에 써 야 합 니 다.
주요 코드 세그먼트 는 다음 과 같 습 니 다(구체 적 인 실현 을 보 려 면 첨부 파일 을 다운로드 하 십시오).
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- spring2.5 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config />
<!-- @Autowired , bean -->
<bean id="udi" class="com.yusj.dao.impl.UserDAOImpl"/>
<!--
@Autowired , (bean autowire ) byType ,
Class, @Qualifier("name") ,
UserServiceImpl setUserDAO
-->
<bean id="udis" class="com.yusj.dao.impl.UserDAOImpl"/>
<bean id="usi" class="com.yusj.service.impl.UserServiceImpl" >
<!-- , property , UserServiceImpl setUserDAO @Autowired -->
</bean>
</beans>
UserServiceImpl.java
package com.yusj.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import com.yusj.dao.IUserDAO;
import com.yusj.model.User;
import com.yusj.service.IUserService;
public class UserServiceImpl implements IUserService {
// setter,getter . Spring
private IUserDAO userDAO ;
public IUserDAO getUserDAO() {
return userDAO;
}
/**
* Annotation Autowired
* Annotation Qualifier Autowired byType byName
* @param userDAO
*/
@Autowired
public void setUserDAO(@Qualifier("udis") IUserDAO userDAO) {
this.userDAO = userDAO;
}
@Override
public void add(User user) {
userDAO.save(user);
}
}
Test.java
package com.yusj.spring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yusj.model.User;
import com.yusj.service.IUserService;
public class Test {
public static void main(String[] args) {
/**
* Spring , ApplicationContext BeanFactory.
* beans src XML
* , , :com/yusj/xml/beans.xml
*
*/
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
/**
* beans.xml id="usi" bean ,
* beans.xml
*
*/
IUserService service = (IUserService) ctx.getBean("usi");
//
User u = new User();
u.setUsername(" ");
u.setPassword("zhangsan");
//
service.add(u);
/**
* :
* user save success...
* User [username= , password=zhangsan]
*/
}
}
항목 내 보 내기 첨부 파일 참조,Jar 패키지 포함(내 보 내기->General->File System)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.