IOC/DI
1. 注入对象行为的注解
<!-- 注解方式进行配置 -->
<context:annotation-config/>
<!-- 注入对象行为的注解 -->
<!-- bean 的 name,用于 context 获取:getBean() -->
<bean name = "c" class="pojo.Category">
<!-- 对应 Category 的属性 name -->
<property name="name" value="cat1"></property>
</bean>
<bean name = "p" class = "pojo.Product">
<property name="name" value = "pro1"></property>
<!-- <property name="category" ref="c"></property> 改用注解方式 -->
</bean>
方法① 在需要注入的属性前或者属性的 set() 方法前加上 @Autowired 注解
方法② 在属性前加上 @Resource(name="c") 注解
2. <!-- 对 Bean 对象本身进行注解 -->
<context:component-scan base-package="pojo" />
在类前加上 @Component("p") 注解,表明此类是 Bean
在需要注入的属性前加上 @Autowired 注解
需要注入属性的初始化放在属性声明上进行
AOP
1. 普通方式
<bean name = "ps" class = "service.ProductService" />
<!-- 声明业务对象 -->
<bean id = "loggerAspect" class = "aspect.LoggerAspect" />
<!-- 声明日志切面 -->
<aop:config>
<!-- 指定右边的核心业务功能
* 表示包名.类名的任意方法下
(..) 表示参数是任意数量和类型
-->
<aop:pointcut id = "loggerCutpoint" expression =
"execution(* service.ProductService.*(..))" />
<!-- 指定左边的辅助功能 -->
<aop:aspect id = "logAspect" ref = "loggerAspect">
<aop:around pointcut-ref = "loggerCutpoint" method = "log"/>
</aop:aspect>
<!-- 通过 aop:config 把业务对象和辅助功能编织在一起 -->
</aop:config>
2. 注解方式
<context:component-scan base-package="aspect"/>
<context:component-scan base-package="service"/>
<aop:aspectj-autoproxy/>
在业务类前加@Component("ps")
在切面类前加@Aspect //表示这是一个切面
@Component //表示这是一个 bean, 由 Spring 进行管理
在具体的切面方法前加@Around(value = "execution(* service.ProductService.*(..))") //表示对这个类中的所有方法进行切面操作
Spring 笔记
最新推荐文章于 2022-10-12 21:51:01 发布