Spring支持IOC(控制反转),DI(依赖注入),AOP(面向切面编程)
IOC:控制对象的创建权,将对象的创建权交给Spring容器;
DI:将对象注入Spring容器中便于获取对象;
AOP:面向切面编程,它是OOP(面向对象编程)的一种补充,主要作用是对方法进行增强;
为什么要用Spring来帮助我们管理对象?
当我们正常创建对象时,会产生耦合现象。什么是耦合现象呢,加入当项目部署到服务器时,代码在运行时,会变成class文件,假设一段时间后,不需要调用这个对象,而是另一个对象,这样修改会很麻烦,这是Spring的作用就体现出来了,用Spring来帮助我们创建对象,管理对象,这样就不会产生耦合,那么该如何去使用呢?
1、导入对应坐标
//spring坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
2、准备配置文件
在resources目录下创建applicationContext.xml配置文件
3、依赖注入
在applicationContext.xml中进行依赖注入
<bean class="com.NEPU.user" id="user"></bean>
4、加载配置文件,获取user对象
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
app.getBean(user);//对象的id
user.A();//调用对象里的方法
但如果是多级调用呢?
实际开发中,每个包都有不同的职责,web层调用service层,service层调用dao层,这时该如何创建呢?
我们不能创建多个容器,这样太占内存了
只需要在web层创建一次容器,将service,dao层中对象注入容器,先获取service层中对象
//创建容器
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml") ;
//从容器中获取对象
UserService userService = (UserService) app.getBean("userService");
//调用方法
userService.service();
这样只是获取service层对象,dao层如何获取?
在UserService对象中定义一个UserDao类型的成员变量(上一步将dao中对象注入容器中,容器中有这个类型的对象),在xml文件中对这个成员进行注入赋值:
<bean class="com.NEPU.service.UserService" id="userService">
<property name="UserDao" ref="userDao"></property><!-- 赋值操作-->
</bean>
<bean class="com.NEPU.Dao.UserDao" id="userDao"></bean>
这时,会将Spring容器中的userDao对象的值赋给该成员变量,可以调用其中方法。
,本文章只是作者对Spring的理解,希望能帮助到大家,后续还会接着更新