2018.12.22 Spring学习02
Spring学习02
1.使用注解配置Spring
1.1 为主配置文件引入新的命名空间(约束)
添加约束文件xxx-xxx-context.xml
添加到主配置文件中
选择刚才的context.xml文档
记住:一个xml文档只能有一个命名空间(昨天的命名空间是空的) 只需要写最后一个单词作为命名空间就可以了
1.2 开启使用注解代理配置文件
1.3 在类中使用注解完成配置
1.4 编写测试类进行Junit测试
解决办法
重新运行
1.5 将对象注册到容器中
1.6 如何指定对象的作用范围 (scope注解)
默认值属性singleton
1.7 给对象赋值 (Value注解注入)
1.7.1 值类型注入
1.在成员变量上面添加Value
2.在set方法上面添加Value(推荐使用)
以上是值类型注入的两种方式。第一种是通过反射的Field赋值,第二种是set方法赋值。技术上来说第一种破坏了对象的封装性,但是大家都习惯加在成员变量上面
1.7.2 引用对象类型注入
在Car对象上注入注解 Component,并且添加Value赋值
第一种注入方式。@Autowired
在配置文件中添加第二辆车
测试第一种方式发现无法输出第二辆车的信息输出
第二种注入方式。@Autowired @Qualifier("car2") 需要两个一起结合使用
第三种注入方式。@Resource(name="car2")
1.7.3 指定注入初始化/销毁方法
@PostConstruct //在对象创建后调用 init-method
@PreDestroy //在对象销毁之前调用 destroy-method
测试
修改后二次测试
2.STS插件安装
查看详细的教程
https://www.cnblogs.com/qichunlin/p/10159524.html
3. spring与junit整合测试
3.1 导包 4+2+aop+test
在测试类中添加注释 @RunWith(SpringJUnit4ClassRunner.class)
在添加一个注释 @ContextConfiguration("classpath:applicationContext.xml")
测试
3.spring中的AOP
3.1思想 介绍
第一次---拦截器(乱码处理)
第二次---事务管理(通过动态代理方式解决)
第三次---Action中参数赋值校验是否登陆
3.2 spring中的aop概念
Spring能够为容器中管理的对象生成动态代理对象
以前我们要使用动态代理对象,我们需要自己调用下面的这个方法,Proxy.newProxyInstance(xx,xx,xx)
spring能够帮我们生成代理对象 (重点)
3.3 spring实现aop的原理
3.3.1 动态代理(有接口,优先使用)
被代理对象必须要实现接口,才能产生代理对象。如果没有接口将不能使用动态代理
测试
3.3.2 cglib代理(没有接口)
第三方代理技术,cglib代理可以对任何类生成代理,代理的原理是对目标对象进行继承代理。如果目标对象呗final修饰,那么该类无法被cglib代理
测试