首先来看看一条关于spring的高大上的解释:
Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架。
问题、什么是IOC?
IOC就是最终要实现的目标,而实现这个目标所需要的手段就是DI(依赖注入)。
问题、spring能做什么?
spring的本质就是创建对象和管理对象的(维护其之间的关系)。
我们常用的spring注入的方式有以下几种:
新建maven项目,配置spring环境,就不在此赘述了,下面是项目的结构图
1、通过SET方法注入
如上结构,如果在UserService类中有一个全局变量userDao,如果要在UserService中访问userDao,就必须先通过spring注入值,至此,在UserService中添加对应属性的set方法:如下
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
这里重点是方法名称,例如属性名是“userDao”,那么对应的set方法名必须是“setUserDao”(可以使用IDE工具自动生成);
然后在spring的配置文件中配置:
<bean id="userDao" class="com.haha.spring.UserDao">
<bean id="userService" class="com.haha.spring.UserService">
<--
property:节点用于配置属性
name:属性的名称
ref:要引用的bean的id
-->
<property name="userDao" ref="userDao"/>
</bean>
2、构造方法注入
为需要注入值的参数配置以其为参数的构造方法;如:
public class UserService{
private UserDao userDao;
public UserService(UserDao userDao){
this.userDao=userDao;
}
}
然后在spring配置文件中使用<constructor-arg>
做相应的配置;如下
<bean id="userDao" class="com.haha.spring.UserDao">
<bean id="userService" class="com.haha.spring.UserService">
<--
constructor-arg:节点用于配置属性
index:参数索引的位置
ref:要引用的bean的id
-->
<constructor-arg name="userDao" ref="userDao"/>
</bean>