目录
一、Bean的自动装配
1.byName和byType装配
2.使用注解实现装配
@Autowired
@Resource
二、使用注解开发
三、代理模式
静态代理
动态代理
四、AOP
1、aop在spring中的作用
第一种方式
第二种方式实现aop
第三种方式,使用注解
在Spring中有三种装配方式
<bean id="cat" class="com.kun.pojo.Cat"></bean> <bean id="dog" class="com.kun.pojo.Dog"></bean> <!-- byName会自动在容器上下文查找,和自己set方法后面的值对应的beanId byType找对象相同的对象属性 --> <bean id="people" class="com.kun.pojo.People" autowire="byType"> <property name="name" value="带鱼"/> <!-- <property name="cat" ref="cat"/>--> <!-- <property name="dog" ref="dog"/>--> </bean>
1.导入约束
2.配置注解的支持
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:annotation-config/> </beans>
直接在属性上使用或者在set方法上使用,使用了以后可以不用写set方法了,且符合byType。
<!--开通注解支持--> <context:annotation-config/>
@Autowired private Cat cat; @Autowired private Dog dog;
科普:@Nullable 字段标记的注解,说明这个值可以为空
如果autowired,require为false表示允许cat在容器中不存在
提过自动装配有多个或者复杂,无法匹配用
@Autowired @Qualifier(value = "dog22") private Dog dog;
先匹配名字在匹配类型
可以加name属性里的value值确定装配
两者的区别:
必须导入aop包,使用注解需要导入context约束,增加注解的支持
<!--指定要扫描的包,这个包下的注解生效--> <context:component-scan base-package="com.kun.pojo"/> <!--开通注解支持--> <context:annotation-config/>
1、bean
2、属性注入