Spring
文章平均质量分 64
HappyRocking
坚信强人工智能的到来
展开
-
使用 jdk 实现 AOP
两种:静态代理、动态代理。企业中,静态代理很少使用。拦截的步骤可以被称为横截性关注点。拦截某些类的话,会判断这个类是否实现了接口,如果实现了接口就会用 jdk 动态代理来创建代理对象;如果这个类没有实现接口情况下,则用 CGLIB 来创建代理对象。jdk 动态代理:package aop.test.factory;import jav原创 2017-09-22 23:22:33 · 472 阅读 · 0 评论 -
使用注解方式实现aop
首先,在 xml 配置文件中,加入 aop 的资源: xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:context= "http://www.springframework.org/schema/context" xmlns:aop= "原创 2017-09-22 23:23:44 · 381 阅读 · 0 评论 -
error at ::0 can't find referenced pointcut...解决方法
使用AspectJ注解开发AOP应用时,会遇到以下问题: ::0 can't find referenced pointcut 这是 jdk 和 spring 插件的版本不兼容的问题,正确版本如下:我用的 jdk1.7,因此在 pom.xml 中修改版本如下即可: org.aspectj aspectjrt原创 2017-09-22 23:28:09 · 1458 阅读 · 0 评论 -
使用 CGLIB 实现 AOP
实际应用中,需要代理的类可能没有实现接口,那么就不能用 JDK 来实现动态代理,可以使用 CGlib 来实现。CGlib 动态代理:package aop.test.factory;import java.lang.reflect.Method;import output.test.impl.HelloBean;import net.sf.c原创 2017-09-22 23:29:38 · 748 阅读 · 0 评论 -
用@Resource注解来装配属性
使用 Field 注入(注解方式):减轻配置文件的臃肿程度。原因:在 xml 中注入的话,如果变量很多,那会使得行数很多,很臃肿。定义变量时加上注解: @Resource private PersonDao personDao;或者在 setter 函数前面加上注解: @Resource原创 2017-09-22 23:33:28 · 697 阅读 · 0 评论 -
用@Autowired 注解来装配属性、自动装配
和 @Resource 的区别在于,它优先按照类型来匹配,默认情况下要求依赖必须存在,如果想让依赖不存在也可以,则采用以下方式:@Autowired(required=false)自动装配:按照各种方式来自动匹配,不用人为指定。不推荐使用,因为可能会发生不需要的自动匹配。如:java代码中不用做任何的注解,也会原创 2017-09-22 23:34:16 · 1131 阅读 · 0 评论 -
三种实例化bean的方式
方法一:使用类构造器实例化,如:表示对 output.test.HelloBean 这个类进行了注入。此类如下:package output.test;import output.test.impl.Hello;public class HelloBean implements Hello {原创 2017-09-25 17:10:27 · 245 阅读 · 0 评论 -
管理bean的生命周期
作用域范围默认是单实例(singleton),创建Spring容器时,就实例化类。作用域范围是原型(prototype)时,getBean()时才会实例化类。、还可以修改中的一个属性 lazy-init,true 表示创建容器时不进行实例化,调用时才进行实例化,反之表示创建容器室进行实例化。如果修改中的 default-lazy-init,则表示对其中所有的 都进行规范。原创 2017-09-25 17:16:01 · 222 阅读 · 0 评论 -
Spring依赖注入原理
基于接口的编程,将服务端和数据库端完全隔离开,只由接口相联系。如定义一个: 其中,第一个声明了一个类 PersonDaoBean,这是接口 PersonDao 的一个实现类。第二个生命了一个类 HelloBean,这个类中定义了一个私有变量,变量类型便是接口 PersonDao。如果要想使原创 2017-09-25 17:17:24 · 401 阅读 · 0 评论