补充1:Spring框架 及IOC AOP理解

目录:

Spring Framework

Spring IoC

Spring AOP

Spring Framework

Spring Core: 基础,可以说是Spring其他所有功能都需要依赖于该类库。

           主要提供Ioc依赖注入功能

Spring Aspects:该模块为与AspectJ的集成提供支持

Spring AOP:提供了面向切面的编程实现

Spring JDBC:Java数据库连接

Spring JMS:Java消息服务

Spring ORM:用于支持Hibernate等ORM工具

Spring Web:为创建Web应用程序提供支持

Spring Test:提供了对JUnit和TestNG测试的支持

 

 

 

 

 

 

 

AspectJ 是什么

AspectJ 是一个面向切面的框架,他定义了 AOP 的一些语法,有一个专门的字节码生成器来生成遵守 java 规范的 class 文件。

 

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。

https://blog.csdn.net/Andy_ayu/article/details/78464020

 

O/X Mapper 是什么?  

 

Spring 3.0 的一个新特性是 O/X Mapper。O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML。它的目的是在 Java 对象(几乎总是一个 plain old Java object,或简写为 POJO)和 XML 文档之间来回转换。

 

例 如,您可能有一个带有几个属性的简单 bean,且您的业务需要将那个 Java 对象转换为一个 XML 文档。Spring 的 O/X Mapper 能够为您解决那个问题。如果反过来,您需要将一个 XML 文档转换为一个简单 Java bean,Spring 的 O/X Mapper 也能胜任。

https://www.cnblogs.com/xuxiuxiu/p/6653060.html

 

Spring Portlet 是什么?

 

针对 JSR-168 Portlet,Spring同样提供了一套类似的 MVC 框架。Portlet 工作流程和 Servlet 的主要差异在于,Portlet 的请求处理有两个独特的阶段:动作(Action)阶段和呈现(Render)阶段。动作阶段会有"后台"数据改变或动作的代码,这些代码只会执行一次。显示阶段会产生用户每次刷新时看到的显示内容。在单个请求的整个处理过程中,动作阶段只会被执行一次,而显示阶段可能会被执行多次。这就要求在改变系统持久状态的活动和产生显示内容的活动之间,有一个清晰的分层,Spring Portlet MVC 框架很好地体现了这一点。

https://www.ibm.com/developerworks/cn/java/j-lo-spring2-portal/

https://www.coder.work/article/6598242

 

Portal作为web一种应用,通常用来提供个性化、单次登录、聚集各个信息源的内容,并作为信息系统表现层的宿主。

https://blog.51cto.com/fengbohaishang/989144

Spring IoC

IoC(控制翻转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IoC在其他语言中也有应用,并非Spring特有。IoC容器是Spring用来实现IoC的载体,IoC容器实际上就是个Map(key,value),Map中存放的是各种对象。

IoC容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。

Spring  IoC的初始化过程:

举例:

(1)在service层中有一个WelcomeService服务接口,一般情况下都是通过WelcomeService service = new WelcomeServiceImpl();创建实例并进行调用:

 

(2)而由于实际应用环境与测试环境有所区别,需要替换WelcomeServiceImpl为一个MockWelcomeServiceImpl

(3)下面看通过Spring的IOC如何实现,首先将WelcomeService交由Spring管理:

<bean name="WelcomeService" class="XXX.XXX.XXX.service.impl.WelcomeServiceImpl"/>

(4)然后在业务代码处通过Spring IOC拿到具体对象:

public class WelcomeController {

    @Autowired

    private WelcomeService service;

 

    @RequestMapping("/welcome")

    public String welcome() {

        return service.retrieveWelcomeMessage();

    }

}

(5)测试的时候,只需要更改配置文件,将WelcomeService对应的实现改为MockWelcomeServiceImpl即可:

<bean name="WelcomeService" class="XXX.XXX.XXX.service.impl.MockWelcomeServiceImpl"/>

 

这种方式对业务代码没有任何侵入,它有效的实现松耦合。

 

Spring AOP

AOP(面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事物处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

AOP,面向切面编程,是对OOP的补充。从网上看到的一句话:这种在运行时,动态的将代码切入到类的指定方法或者指定位置上的编程思想,就是面向切面的编程。这是其中的一种方式,在运行时动态添加。还有另外一种是在编译代码的时候,将代码切入到指定的方法或者位置上去,这是静态添加的方式。

https://cxis.me/2017/04/12/Spring%E4%B8%ADAOP%E6%A6%82%E5%BF%B5%EF%BC%8C%E5%8E%9F%E7%90%86%EF%BC%8C%E5%BA%94%E7%94%A8%E4%BB%8B%E7%BB%8D/

 

面向对象编程(英文Object Oriented Programming),所以也叫做OOP。

https://blog.csdn.net/q932104843/article/details/52298565

猜你喜欢

转载自blog.csdn.net/qq_42198024/article/details/107927093