天天看点

spring使用注解方式完成IOC和AOP功能

前言

控制反转依赖注入(IOC)及AOP是spring的核心功能,spring使用xml文件完成配置,基本上已经废弃,目前主流的是使用注解的方式完成这两项功能。以下通过示例,演示注解的方式,实现IOC和AOP。

创建maven工程

spring使用注解方式完成IOC和AOP功能

输入工程名称,完成工程创建。打开pom文件,加入spring依赖包

spring使用注解方式完成IOC和AOP功能

在main目录下加入resource文件夹,并将其设置为Resources Root

spring使用注解方式完成IOC和AOP功能

在resources文件夹下,创建spring配置文件,applicationContext.xml

spring使用注解方式完成IOC和AOP功能

IOC代码编写

在com.bjwl下创建services包,添加CustomerService接口和CustomerServiceImpl实现类,目录结构如下图所示

spring使用注解方式完成IOC和AOP功能

其中,CustomerServiceImpl实现代码如下:

spring使用注解方式完成IOC和AOP功能

划线部分就是对应的注解。

告诉spring容器,需要进入容器的类。修改applicationContext.xml文件,修改内容如下:

spring使用注解方式完成IOC和AOP功能

此时,idea会提示需要加入context依赖包,根据提示,alt+enter即可

IOC测试

打开CustomerServiceImpl类文件,使用菜单(见下图)或快捷键Ctrl+Shift+T,创建测试类

spring使用注解方式完成IOC和AOP功能
spring使用注解方式完成IOC和AOP功能

写测试代码如下:

spring使用注解方式完成IOC和AOP功能

点击play()前绿色按钮运行,执行结果如下:

spring使用注解方式完成IOC和AOP功能

反思:已经完成依赖注入的功能,这样我门的调用方与其依赖的对象呈现松耦合,调用方测似类中使用接口完成对象的定义,如果用户的业务发生变化时,我们仅需要新增一个实现CustomerService接口的类,将注解更改到新扩展的类上即可完成更改,符合开闭原则

AOP示例代码编写

创建包aspect,添加类log如下图:

spring使用注解方式完成IOC和AOP功能

如果遇到以下情况

spring使用注解方式完成IOC和AOP功能

点击图中依赖包,由maven自动添加

spring使用注解方式完成IOC和AOP功能

修改配置文件applicationContext.xml文件,添加AOP配置,如下图

spring使用注解方式完成IOC和AOP功能

程序开发完成,进入测试

AOP测试

添加测试类,代码如下:

spring使用注解方式完成IOC和AOP功能

运行,结果如下:

spring使用注解方式完成IOC和AOP功能

测试类另外一种写法,如下图所示

spring使用注解方式完成IOC和AOP功能

执行效果同第一种测试方法。特别注意pom文件中Spring的包和Spring-text包版本一致

否则报:“java.lang.NoSuchMethodError: org.springframework.util.Assert.notNull”

spring使用注解方式完成IOC和AOP功能

结论

注解的方式是当前主流的使用方式。在示例的编写中maven的使用,帮助我们下载所依赖的jar包,提供了很大的便利