AOP实例讲解
https://www.jianshu.com/p/5b9a0d77f95f
AOP事务实例
![](https://img.haomeiwen.com/i4428387/60443d7c324e3eec.png)
AOP基本概念
![](https://img.haomeiwen.com/i4428387/e556778812ba646d.png)
AOP通知类型
![](https://img.haomeiwen.com/i4428387/90cb21a9fb94fa66.png)
AOP原理
![](https://img.haomeiwen.com/i4428387/137b4b6f30f5cafd.png)
gclib步骤
![](https://img.haomeiwen.com/i4428387/e1e250b602adad26.png)
IOC(本质)
![](https://img.haomeiwen.com/i4428387/a49b8705d4fdb434.png)
被IOC类的必要条件
- 无参构造(有参构造需要特殊处理)
- 属性set方法
依赖注入四种方式
接口注入
注解注入
set注入
构造函数注入
https://zhuanlan.zhihu.com/p/34405799
spring IOC容器主要方法(使用到了反射)
![](https://img.haomeiwen.com/i4428387/c89200a6a0f804c8.png)
依赖注入:BeanFactory的生命周期
![](https://img.haomeiwen.com/i4428387/e271bb9611423762.png)
依赖注入:ApplicationContext的生命周期
![](https://img.haomeiwen.com/i4428387/4715915809b30541.png)
-
引入的第三方包@Autowired 不能自动加载解决办法
在主类加上注解:
@ComponentScan("包名")
@ComponentScan
-
spring文档
http://spring.io/
http://spring.io/projects/spring-framework
-
spring使用ApplicationListener初始化程序demo
@Component
public class InitApp implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
// 防止重复执行
if (event.getApplicationContext().getParent() != null) {
return;
}
// 业务逻辑
}
}
-
加载resources资源文件
public class testAdapterApp {
static final ApplicationContext context
= new FileSystemXmlApplicationContext(testAdapterApp.class.getResource("applicationContext.xml").getFile());
public static void main(String[] args) {
}
}
-
spring applicationContext.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: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">
<description> esper demo cfg </description>
<context:component-scan base-package="github.nashse" />
</beans>
-
spring:同一个类中,三个属性变量指向同一个地址
@Component
public class Init {
@Autowired
NettyClient mdClient;
@Autowired
NettyClient emsClient;
@Autowired
NettyClient omsClient;
}
-
解决办法:在xml中实例化,id为对应变量名字
<bean>
<bean id="mdClient" class="NettyClient" >
</bean>
<bean id="emsClient" class="NettyClient">
</bean>
<bean id="omsClient" class="NettyClient">
</bean>
</beans>
![](https://img.haomeiwen.com/i4428387/2684f86877c194ab.png)
网友评论