Каталог статей
Автоматическая сборка
Сборку Bean можно понимать как внедрение зависимостей, а способ сборки Bean - это способ внедрения зависимостей Bean. Контейнер Spring поддерживает множество форм методов сборки Bean, таких как сборка на основе xml, сборка на основе аннотаций и автоматическая сборка и т. Д. (Наиболее часто используется сборка на основе аннотаций).
- Для сборки на основе xml, пожалуйста, обратитесь к моему сообщению в блоге: Режим работы Bean Management основан на режиме xml
- Сборка на основе аннотаций будет обновлена позже.
Сегодня я в основном пришел к пониманию
自动装配
пути!
① Концепция
Автоматическая сборка есть根据指定装配规则(属性名称或者属性类型),Spring 自动将匹配的属性值进行注入。
② Тип автоматической сборки
Осуществить автоматическую сборку
bean 标签
Свойстваautowire
, настроить автоматическую сборку- Для атрибута autowire обычно используются два значения:
byName 根据属性名称注入
, Значение id внедренного bean-компонента значения совпадает с именем атрибута класса.byType 根据属性类型注入
- Для атрибута autowire обычно используются два значения:
Ⅰ.byName вводится в соответствии с именем атрибута
▶ Класс кафедры
public class Dept {
// 部门名称
private String dName;
// toString()
@Override
public String toString() {
return "Dept{" +
"dName='" + dName + '\'' +
'}';
}
}
▶ Класс Emp
public class Emp {
// 声明属性
private Dept dept;
// set()
public void setDept(Dept dept){
this.dept = dept;
}
// toString()
@Override
public String toString() {
return "Emp{" +
"dept=" + dept +
'}';
}
// test()
public void test(){
System.out.println(dept);
}
}
▶ Файл конфигурации XML
<?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:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
<!-- 配置创建对象 -->
<!--实现自动装配
bean 标签属性 autowire,配置自动装配
autowire 属性常用两个值:
byName 根据属性名称注入 ,注入值 bean 的 id 值和类属性名称一样
byType 根据属性类型注入
-->
<bean id="emp" class="自动装配.Emp" autowire="byName">
<!-- 手动注入 -->
<!--<property name="dept" ref="dept"></property>-->
</bean>
<bean id="dept" class="自动装配.Dept"></bean>
</beans>
Значение id внедренного bean-компонента значения совпадает с именем атрибута класса.
▶ Тестовый класс
public class Test {
@org.junit.Test
public void test_Emp(){
try {
ApplicationContext context = new ClassPathXmlApplicationContext("自动装配/bean_Emp.xml");
Emp emp = context.getBean("emp",Emp.class);
System.out.println(emp);
emp.test();
} catch (Exception e){
e.printStackTrace();
}
}
}
Ⅱ.byType вводится в соответствии с типом атрибута
- Просто измените значение атрибута autowire на byType
▶ Файл конфигурации XML
<?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:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
<!-- 配置创建对象 -->
<!--实现自动装配
bean 标签属性 autowire,配置自动装配
autowire 属性常用两个值:
byName 根据属性名称注入 ,注入值 bean 的 id 值和类属性名称一样
byType 根据属性类型注入
-->
<bean id="emp" class="自动装配.Emp" autowire="byType">
<!-- 手动注入 -->
<!--<property name="dept" ref="dept"></property>-->
</bean>
<bean id="dept" class="自动装配.Dept"></bean>
</beans>
☠ Примечание
При автоматическом внедрении через тип атрибута несколько тегов bean одного типа не могут существовать одновременно, иначе Spring не узнает, какой из них использовать, и будет сообщено об ошибке . В настоящее время его можно вводить только в форме byName ~