标签:cat 使用方法 private tom config work html public wired
博文参考链接:https://www.yiibai.com/spring/spring-auto-wiring-beans-with-autowired-annotation.html
//什么是spring
参考链接:https://blog.csdn.net/qq_22172133/article/details/81487134
spring 是一个开源框架,核心为 IOC(依赖注入/控制反转),AOP(面向切面)
这两个概念后面会详细介绍
//spring优点
1.方便解耦,对依赖对象的创建和管理交给spring容器
2.aop面向切面编程,对通用的异常,监控等进行统一的管理
3.声明式事务,方便事务管理
4.方便程序测试,Spring对Junit4支持,可以通过注解方便的测试Spring程序
spring IOC使用方法:
依赖注入与自动装配的区别:
依赖注入是为引用的对象进行赋值,自动装配是进行赋值时的一种方法
如:
public class Customer { private Person person; public Customer(Person person) { this.person = person; } public void setPerson(Person person) { this.person = person; } //... }
public class Person { //... }
<bean id="customer" class="com.yiibai.common.Customer" autowire="byName" />
<bean id="person" class="com.yiibai.common.Person" />
其中红色部分是一个依赖注入,Customer类引用了Person类,所以注入了person对象,自动装配模式为 byName,即为这个引用对象(person)赋值时采用的是按名称匹配的方法
依赖注入有两种:setter, 构造器
自动装配有五种:
<bean id="customer" class="com.yiibai.common.Customer"> <property name="person" ref="person" /> </bean> <bean id="person" class="com.yiibai.common.Person" />
<bean id="customer" class="com.yiibai.common.Customer" autowire="byName" /> <bean id="person" class="com.yiibai.common.Person" />
<bean id="customer" class="com.yiibai.common.Customer" autowire="byType" /> <bean id="person" class="com.yiibai.common.Person" />
<bean id="customer" class="com.yiibai.common.Customer" autowire="byType" />
<bean id="person" class="com.yiibai.common.Person" />
<bean id="student" class="com.yiibai.common.Person" />
<bean id="customer" class="com.yiibai.common.Customer" autowire="constructor" /> <bean id="person" class="com.yiibai.common.Person" />
以上为通过xml进行配置,下面介绍下通过注解配置
@Autowired
可以用于 setter方法,构造函数,属性字段
public class Customer {
@Autowired 用于属性字段 private Person person; /*@Autowired 用于构造函数 public Customer(Person person) { this.person = person; }*/ /*@Autowired 用于setter方法 public void setPerson(Person person) { this.person = person; }*/ //... }
public class Person { //... }
@Autowired注解是通过匹配数据类型自动装配Bean
想要使用@Autowired注解,有两种方法
1.xml引入如下配置
<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"> //... <context:annotation-config /> //... </beans>
2.xml中引入AutowiredAnnotationBeanPostProcessor
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> <bean id="CustomerBean" class="com.yiibai.common.Customer"> <property name="action" value="buy" /> <property name="type" value="1" /> </bean> <bean id="PersonBean" class="com.yiibai.common.Person"> <property name="name" value="yiibai" /> <property name="address" value="address ABC" /> <property name="age" value="29" /> </bean> </beans>
@Qualifier注解,当Autowired注入时有多个相同类型的bean,通过该注解可以指定要注入哪个bean
<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 />
<bean id="CustomerBean" class="com.yiibai.common.Customer">
<property name="action" value="buy" />
<property name="type" value="1" />
</bean>
<bean id="PersonBean1" class="com.yiibai.common.Person">
<property name="name" value="yiibai-1" />
<property name="address" value="address-1" />
<property name="age" value="29" />
</bean>
<bean id="PersonBean2" class="com.yiibai.common.Person">
<property name="name" value="yiibai-2" />
<property name="address" value="address-2" />
<property name="age" value="28" />
</bean>
</beans>
public class Customer
{
@Autowired
@Qualifier("PersonBean1")
private Person person;
private int type;
private String action;
//getter and setter methods
}
标签:cat 使用方法 private tom config work html public wired
原文地址:https://www.cnblogs.com/byebyebird/p/10132545.html