您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
13-Spring配置文件-依赖注入3
发布时间:2024-12-19 16:42:43编辑:雪饮阅读()
-
Bean的依赖注入概念
依赖注入(Dependency Injection):它是Spring框架核心IOC的具体实现。
在编写程序时,通过控制反转,把对象的创建交给了Spring,但是代码中不可能出现没有依赖的情况。IOC解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法。
那这种业务层和持久层的依赖关系,在使用Spring之后,就让Spring来维护了。
简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。
Bean的依赖注入方式
怎么将UserDao怎样注入到UserService内部呢?
构造方法
set方法
那么bean除了之前的无参构造,也可以通过setter方法来实现注入。
给其嵌入property标签,name值为setter的后面的属性名,例如UserService的实现类:
package com.service.impl;
import com.dao.UserDao;
import com.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserServiceImplement implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void save() {
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao= (UserDao) app.getBean("userDao");
userDao.save();
}
}
该类中setUserDao是一个setter方法,那么取其set后面部分并将取到的字符串首字母小写,则就是userDao,那么property的name值就是该userDao,而ref则指定setter执行时候要传入的参数,我们这里则就是UserDao的实例,那么该实例也可以通过关联一个bean的UserDao的实现类所在的这个Bean。
所以这里的Spring Config配置文件则如:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="com.dao.impl.UserDaoImpl"></bean>
<bean id="userService" class="com.service.impl.UserServiceImplement">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
那么真正的入口方法main中的调用也和以前一样保持不变。
package com.web;
import com.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Index {
public static void main(String[] args) {
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService= (UserService) app.getBean("userService");
userService.save();
}
}
关键字词:Spring,注入