Spring中的AOP

2018-06-18 02:46:44来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

Spring中的AOP

在Spring中AOP到底是什么,这个说句实在的概念的东西本人我自己还是不是太了解。我就说说我的见解。

AOP(面向切面编程)它是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,我们利用AOP可以对业务逻辑的各个部分功能经行隔离,从而使得业务逻辑各个部分之间的耦合度降低,从而提高我们在编程的时候的开发效率,提高程序(或者代码)的重用性。

AOP的代理模式:

  1:静态代理

    优点:我们可以在不侵入源代码的情况下扩展代码的功能,使得业务更加的丰富。

    缺点:要是有多少个业务需要代理的时候就会需要几个接口和代理类。

  2:动态代理:代理对象可以根据实际情况动态变化

    i:JDK动态代理:这个是有JDK中提供的代理类完成动态代理。

      缺点:需要设计接口

    ii: 动态代理:这个是有第三方的CGlib类来完成动态代理。

      优点:它会在没有接口的情况下可以生成代理对象。

      在使用第三方的情况下要导一下jar包的:

      CGlib包:com.springsource.net.sf.cglib-2.2.0.jar

好多人看到这里可能还是没有明白是什么意思,现在我就来举一个例子来说明一下:

有一个皇上  一个太监  一个大臣这个任务  我们都知道皇上每天日理万机不能已有一个决定就自己去告诉大臣吧,这样也不切合实际。这个时候就有我们的太监啦。

假设:大臣家里有个很漂亮的姑娘,皇上想把这位姑娘招为贵妃,他自己有不能去和大臣去讲这个时候就叫来太监对太监说:你去大臣家里说我想招那位姑娘为贵妃。然后这个太监就如同代理一样去和大臣说那句话。我们都知道话是皇上让太监去传答的。并不是太监表达的(太监不可能这样做啊)。这样以来太监就是我们现在说的代理。

写一段代码我们来看看:

定义一个规范 Standard:

1 //这是一个规范 皇上太监都要遵循
2 public interface Standard {
3     public void say();
4 }

定义一个皇上 Majesty:

1 //原对象 皇上
2 public class Majesty implements Standard{
3 
4     @Override
5     public void say() {
6         System.out.println("大臣我要把你家的那个姑娘纳为贵妃");
7     }
8 }

这个时候来定义我们的代理类也就是太监Eunuch:

 1 //代理对象 太监 Eunuch
 2 public class Eunuch implements Standard {
 3     //原对象 皇上
 4     private Standard standard = new Majesty();
 5     @Override
 6     public void say() {
 7               //在这里太监也可以加上自己的话
 8         System.out.println("皇上每天日理万机想找一个人此后");
 9         standard.say();
10         System.out.println("明日让姑娘进宫。");
11         
12     }
13 }    

最后我们来一个测试类Text:

1 1 public class Test {
2 2 
3 3     public static void main(String[] args) {
4 4         // TODO Auto-generated method stub
5 5         Standard eunuch= new Eunuch();
6 6         eunuch.say();
7 7     }
8 8 
9 9 }

 

 

 

 

    

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:SpringMVC入门就这么简单

下一篇:springboot中使用ContextLoaderListener.getCurrentWebApplicati