IOC、DI、AOP简介
IOC(Inversion of Control)是一种设计思想,也是Spring框架的核心思想之一。它将应用程序的控制权从应用程序代码转移到容器中。在传统的编程模型中,对象的创建、依赖关系的管理和销毁都由开发者手动管理,而在IOC中,这些由容器负责。它通过使用依赖注入(DI)的方式来实现对象之间的解耦。
DI(Dependency Injection)是IOC的一种具体实现方式,它通过在对象的构造方法、属性或者工厂方法中插入依赖对象,来实现对象之间的解耦。DI可以通过构造函数注入、Setter方法注入或接口注入等方式来实现。
AOP(Aspect-Oriented Programming)是一种编程思想,它通过将程序逻辑划分为核心逻辑和横切逻辑(例如日志记录、事务处理等),并将横切逻辑独立于核心逻辑进行管理。在传统的编程模型中,横切逻辑通常会散布在各个业务逻辑中,导致代码的重复和难以维护。AOP通过将横切逻辑从核心逻辑中分离出来,使得代码更加模块化和可维护。
在Spring中,AOP和DI是紧密相关的。Spring的AOP功能可以基于DI机制实现。通过使用AOP的切面和通知,可以在DI的对象上添加横切逻辑,实现诸如事务管理、日志记录、性能监控等功能。同时,通过DI可以将横切逻辑注入到目标对象中,实现了横切逻辑和核心逻辑的解耦。
总的来说,IOC将对象的控制权交给容器,DI实现了对象之间的解耦,AOP实现了横切逻辑的模块化和可维护性。它们是Spring框架的核心特性,提供了强大的功能和灵活性,使得开发者可以更加专注于核心业务逻辑的开发。
ruoyi 中Spring IOC、DI 使用自定义类型创建对象和注入对象的使用代码示例
主要用到的是Spring的注解。常用的注解有@Component、@Service、@Controller、@Autowired、@RequestMapping等,它们分别用来标记组件、服务、控制器、自动装配和请求映射等代码元素。
1、自定义类型的创建对象:
首先,需要在Spring的配置文件中定义一个Bean,通过<bean>元素来定义。
例如,在ruoyi的Spring配置文件(例如applicationContext-ruoyi.xml)中,定义一个名为"userService"的Bean,类型为自定义的UserService类,示例代码如下:
2、注入对象的使用:
在需要使用注入对象的地方,通过@Autowired注解来注入对象。
例如,在ruoyi的controller类中,示例代码如下:
在上述示例代码中,通过@Autowired注解将UserService对象注入到DemoController类中的userService属性中。
这样,在使用userService对象的地方,就可以直接使用注入的对象了。
需要确保自定义的UserService类在ruoyi的Spring配置文件中定义为一个Bean才能正确注入。
这样,ruoyi就会在初始化DemoController类时,自动将UserService对象注入到userService属性中。