Spring探究-----自动装配Bean详解
2020-12-13 02:24
标签:demo xmla alt ram autowire 默认 一个 int 装配bean 根据类型进行自动装配. 但要求 IOC 容器中只有一个类型对应的 bean, 若有多个则无法完成自动装配 若属性名和某一个 bean 的 id 名一致, 即可完成自动装配. 若没有 id 一致的, 则无法完成自动装配 @Autowired是按类型自动转配的 @Autowired是根据类型自动装配的,加上@Qualifier则可以根据byName的方式自动装配,其中@Qualifier不能单独使用 @Resource如有指定的name属性,先按该属性进行byName方式查找装配;其次再进行默认的byName方式进行装配;如果以上都不成功,则按byType的方式自动装配。都不成功,则报异常 或者 完整Demo Spring探究-----自动装配Bean详解 标签:demo xmla alt ram autowire 默认 一个 int 装配bean 原文地址:https://www.cnblogs.com/fengfuwanliu/p/10992645.html 1.xml配置文件(了解)
1.1 byName 按名称自动装配(推荐,需要get和set方法)
bean id="student" class="com.spring.autowire.Student" autowire="byName">
property name="stuName" value="小魔仙">property>
bean>
bean id="address" class="com.spring.autowire.Address">
property name="addressInfo" value="一中">property>
bean>
1.2 btType 按类型自动装配
bean id="student" class="com.spring.autowire.Student" autowire="byType">
property name="stuName" value="小魔仙">property>
bean>
bean id="address" class="com.spring.autowire.Address">
property name="addressInfo" value="一中">property>
bean>
1.3 全局autowire
xml version="1.0" encoding="UTF-8"?>
beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName">
beans>
2.注解装配(熟悉)
2.1 @Autowired
@Autowired
private School school;
bean id="school" class="com.spring.autowire.School">
property name="schoolName" value="一中">property>
bean>
2.2 @Qualifier
@Autowired
@Qualifier("schoolName")
private School school;
bean id="schoolName" class="com.spring.autowire.School">
property name="schoolName" value="一中">property>
bean>
2.3 @Resource
@Resource
private School school;
bean id="school" class="com.spring.autowire.School">
property name="schoolName" value="一中">property>
bean>
@Resource(name="schoolName")
private School school;
bean id="schoolName" class="com.spring.autowire.School">
property name="schoolName" value="一中">property>
bean>
package com.spring.autowire;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
/**
* 学生类
*
* @author yyx 2019年6月9日
*/
public class Student {
/**
* 学生姓名
*/
private String stuName;
/**
* 学校信息
*/
@Autowired
private School school;
/**
* 地址信息
*/
private Address address;
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "Student [stuName=" + stuName + ", school=" + school + ", address=" + address + "]";
}
}
package com.spring.autowire;
/**
* 地址类
*
* @author yyx 2019年6月9日
*/
public class Address {
/**
* 地址信息
*/
private String addressInfo;
public String getAddressInfo() {
return addressInfo;
}
public void setAddressInfo(String addressInfo) {
this.addressInfo = addressInfo;
}
@Override
public String toString() {
return "Address [addressInfo=" + addressInfo + "]";
}
}
package com.spring.autowire;
/**
* 学校类
*
* @author yyx 2019年6月9日
*/
public class School {
/**
* 学校名称
*/
private String schoolName;
public String getSchoolName() {
return schoolName;
}
public void setSchoolName(String schoolName) {
this.schoolName = schoolName;
}
@Override
public String toString() {
return "School [schoolName=" + schoolName + "]";
}
}
package com.spring.autowire;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 测试自动装配
*
* @author yyx 2019年6月9日
*/
public class AutowireMain {
public static void main(String[] args) {
ApplicationContext aContext = null;
try {
aContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student = (Student) aContext.getBean("student");
System.out.println(student);
} catch (Exception e) {
}
}
}
xml version="1.0" encoding="UTF-8"?>
beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
">
context:component-scan base-package="com.spring.autowire" resource-pattern="com.spring.autowire.Student">context:component-scan>
bean id="student" class="com.spring.autowire.Student" autowire="byName">
property name="stuName" value="小魔仙">property>
bean>
bean id="address" class="com.spring.autowire.Address">
property name="addressInfo" value="湖口">property>
bean>
bean id="school" class="com.spring.autowire.School">
property name="schoolName" value="一中">property>
bean>
beans>