前言
控制反转依赖注入(IOC)及AOP是spring的核心功能,spring使用xml文件完成配置,基本上已经废弃,目前主流的是使用注解的方式完成这两项功能。以下通过示例,演示注解的方式,实现IOC和AOP。
创建maven工程
输入工程名称,完成工程创建。打开pom文件,加入spring依赖包
在main目录下加入resource文件夹,并将其设置为Resources Root
在resources文件夹下,创建spring配置文件,applicationContext.xml
IOC代码编写
在com.bjwl下创建services包,添加CustomerService接口和CustomerServiceImpl实现类,目录结构如下图所示
其中,CustomerServiceImpl实现代码如下:
划线部分就是对应的注解。
告诉spring容器,需要进入容器的类。修改applicationContext.xml文件,修改内容如下:
此时,idea会提示需要加入context依赖包,根据提示,alt+enter即可
IOC测试
打开CustomerServiceImpl类文件,使用菜单(见下图)或快捷键Ctrl+Shift+T,创建测试类
写测试代码如下:
点击play()前绿色按钮运行,执行结果如下:
反思:已经完成依赖注入的功能,这样我门的调用方与其依赖的对象呈现松耦合,调用方测似类中使用接口完成对象的定义,如果用户的业务发生变化时,我们仅需要新增一个实现CustomerService接口的类,将注解更改到新扩展的类上即可完成更改,符合开闭原则
AOP示例代码编写
创建包aspect,添加类log如下图:
如果遇到以下情况
点击图中依赖包,由maven自动添加
修改配置文件applicationContext.xml文件,添加AOP配置,如下图
程序开发完成,进入测试
AOP测试
添加测试类,代码如下:
运行,结果如下:
测试类另外一种写法,如下图所示
执行效果同第一种测试方法。特别注意pom文件中Spring的包和Spring-text包版本一致
否则报:“java.lang.NoSuchMethodError: org.springframework.util.Assert.notNull”
结论
注解的方式是当前主流的使用方式。在示例的编写中maven的使用,帮助我们下载所依赖的jar包,提供了很大的便利