Spring中的IOC和AOP

2020-04-15  本文已影响0人  ApesKingMan

1. IOC(Inverse of Control):控制反转,也可以称为依赖倒置   

所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B。

所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如果不倒置,意思就是A主动获取B的实例:B b = new B(),这就是最简单的获取B实例的方法(当然还有各种设计模式可以帮助你去获得B的实例,比如工厂、Locator等等),然后你就可以调用b对象了。

第一:在Spring中声明一个类:A

第二:告诉Spring,A需要B

假设A是UserAction类,而B是UserService类

    <bean id="userService" class="org.leadfar.service.UserService"/>

    <bean id="documentService" class="org.leadfar.service.DocumentService"/>

    <bean id="orgService" class="org.leadfar.service.OrgService"/>

    <bean id="userAction" class="org.leadfar.web.UserAction">

               <property name="userService" ref="userService"/> 

     </bean>

在Spring这个商店(工厂)中,有很多对象/服务:userService,documentService,orgService,也有很多会员:userAction等等,声明userAction需要userService即可,Spring将通过你给它提供的通道主动把userService送上门来,因此UserAction的代码示例类似如下所示。

    package org.leadfar.web;

    public class UserAction{

        private UserService userService;

        public String login(){

            userService.valifyUser(xxx);

        }

        public void setUserService(UserService userService){

            this.userService = userService;

        }

    } 

在这段代码里面,你无需自己创建UserService对象(Spring作为背后无形的手,把UserService对象通过你定义的setUserService()方法把它主动送给了你,这就叫依赖注入!),当然咯,我们也可以使用注解来注入。Spring依赖注入的实现技术是:动态代理。

2. AOP:即面向切面编程

面向切面编程的目标就是分离关注点。什么是关注点呢?就是你要做的事,就是关注点。

AOP的好处就是你只需要干你的正事,其它事情别人帮你干。也许有一天,你想裸奔,不想穿衣服,那么你把仆人A解雇就是了!也许有一天,出门之前你还想带点钱,那么你再雇一个仆人D专门帮你干取钱的活!这就是AOP。每个人各司其职,灵活组合,达到一种可配置的、可插拔的程序结构。

Spring的角度看,AOP最大的用途就在于提供了事务管理的能力。事务管理就是一个关注点,你的正事就是去访问数据库,而你不想管事务(太烦),所以,Spring在你访问数据库之前,自动帮你开启事务,当你访问数据库结束之后,自动帮你提交/回滚事务

参考:https://mp.weixin.qq.com/s/ANbjAYqvzxeYlMT45x2xlw

上一篇 下一篇

猜你喜欢

热点阅读