主要适用于写日志等操作,可以在dao层 业务层添加,但是必须是借口才能使用
配置方法
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
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">
<bean id="log" class="com.hw.util.Log"/>
<aop:config>
<aop:pointcut expression="execution(* com.hw.service.IUser.add*(..))" id="add"/>
<aop:aspect ref="log">
<aop:after method="Write" pointcut-ref="add"/>
</aop:aspect>
</aop:config>
</beans>
关键字: spring的ioc容器的执行流程
- 应用程序的启动 main()
-
- 创建IoC容器的代表
- 解析xml文件(可以为任意的名字,spring默认推荐为applicationContext.xml)
- 通过BeanFactoryPostProcessor来修改bean
- 初始化所有的singleten bean
- constructor注入
- setter注入
- BeanPostProcessor befor方法
- init-method
- BeanPostProcessor after方法
- 返回bean实例
- 返回BeanFactory实例
-
获取bean实例,getBean(".......");
- 如果是BeanFactory直接实现类或者非singleten bean或者lazy-init="true"都在做getBean的时候才初始化
- 实际的业务逻辑……
-
- 销毁
- 如果是XmlBeanFactory时用destroysingletens()来销毁 是延迟加载
- 如果是AbstractApplicationContext时用close();来销毁 不延迟加载 配置destroy-method
- 结束应用程序