深入理解Spring框架IOC容器和AOP

深入理解Spring框架IOC容器和AOP

  • Spring开源框架的简介
  • Spring下IOC容器和DI
  • Spring面向切面编程(AOP)
      • 概念定义:

Spring开源框架的简介

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

Spring的基本框架主要模块:DAO、ORM、AOP、Context、WEB、CORE。

  • Spring DAO:Spring提供了对JDBC的操作支持:JdbcTemplate模板工具类 。

  • Spring ORM:Spring可以与ORM框架整合。例如Spring整合Hibernate框架,其中 Spring还提供HibernateDaoSupport工具类,简化了Hibernate的操作 。

  • Spring WEB:Spring提供了对Struts、Springmvc的支持,支持WEB开发。与此同时Spring自身也提供了基于MVC的解决方案 。

  • Spring AOP:Spring提供面向切面的编程,可以给某一层提供事务管理,例如在Service层添加事物控制 。

  • Spring Context:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

  • Spring Core:提供IOC容器对象的创建和处理依赖对象关系 。


Spring下IOC容器和DI

IOC的别名:依赖注入(DI),所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。它并不是一种技术实现,而是一种设计思想。我们通过IOC将这些相互依赖对象的创建、协调工作交给Spring容器去处理,每个对象只需要关注其自身的业务逻辑关系就可以了,这样很好的实现了解耦。

依赖注入spring的注入方式:

1.XML文件配置bean

  1. set方法注入,要提供相应的set方法
  2. 构造器注入方式

2.基于注解的方式

  1. @Autowired
  2. @Resource

@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false,只按照byType注入。
@Resource默认按照ByName自动注入,由J2EE提供。注解的name属性解析为bean的名字,而type属性则解析为bean的类型。


Spring面向切面编程(AOP)

AOP在Java里是利用反射机制实现。系统是由许多不同的组件所组成的,每一个组件各负责一块特定功能。除了实现自身核心功能之外,这些组件还经常承担着额外的职责。例如日志、事务管理和安全这样的核心服务经常融入到自身具有核心业务逻辑的组件中去。

举个例子:在我们在系统中操作数据库时不可避免的的要考虑事务,如果在每一个方法中都新建一个事务管理器,那对于代码存在严重的耦合和冗余。所以在开发中把事务相关的代码抽出作为一个独立的模块。通过aop的方式进行实现,简化了代码的内容,实现解耦。

概念定义:

  • Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
  • Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
  • Pointcut(切点):表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
  • Advice(增强):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
  • Target(目标对象):织入 Advice 的目标对象.。
  • Weaving(织入):将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程

你可能感兴趣的:(SpringBoot)