栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring-第二篇-依赖注入

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring-第二篇-依赖注入

在上一篇进行了一个简单的spring入门,并简单介绍了一下基本的spring核心配置文件的配置项,那这篇文章呢,还是继续聊聊一些其他的配置项的配置。

1. spring-依赖注入

依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现
在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是代码中不可能出现没有依赖的情况。
IOC 解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法。
那这种业务层和持久层的依赖关系,在使用 Spring 之后,就让 Spring 来维护了。
简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。

1.1 分析原来的实现方式
  1. 创建 UserService,UserService 内部在调用 UserDao的insert() 方法
public class UserServiceImpl implements UserService {
    @Override
    public void insert() {
        ApplicationContext applicationContext = new
        ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        userDao.insert();
	}
}
  1. 将userService的创建权交给spring

  1. 从spring容器中获取userService进行操作
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
userService.save();

​ 上面的代码进行了userService的编写,并将其配置到了spring配置文件中,达到了基本要求。但是太冗余了,既然我们用的是userService,所以我们可以在spring容器中将userDao设置到userService内部,这种做法就是依赖注入。

1.2 依赖注入实现方式

有两种实现方式:

​ 1. 构造方法

​ 2. set方法

1)set方式注入

​ 在UserServiceImpl中添加setUserDao方法

public class UserServiceImpl implements UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    @Override
    public void insert() {
    	userDao.insert();
    }
}

​ 配置spring容器调用set方法进行注入



	
    

2)构造方法注入

​ 创建有参构造

public class UserServiceImpl implements UserService {
    private UserDao userDao;
    
    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }
    
    public UserServiceImpl() {
    }
    
    @Override
    public void insert() {
        ApplicationContext applicationContext = new
        ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        userDao.insert();
    }
}

​ 配置spring容器调用构造方法进行注入



	
    

1.3 bean依赖注入的数据类型

​ 上面呢,我们主要对对象的引用进行了依赖注入的介绍,除了对象引用,普通数据类型、集合等都可以在容器中进行注入。

​ 接下来将会以set方法注入为例,介绍普通数据类型和集合数据类型的注入。为了操作简便,直接在userDaoImpl中进行操作。

1)普通数据类型的注入

public class UserDaoImpl implements UserDao {
    private String addr;
    private int age;
    public void setAddr(String addr) {
    	this.addr = addr;
    }
    public void setAge(int age) {
    	this.age = age;
    }
    public void insert() {
        System.out.println("insert running....");
    }
}

​ 配置文件进行注入


    
    

2)集合数据类型的注入

public class UserDaoImpl implements UserDao {
    private List list;
    private Properties properties;
    private Map userMap;

    public void setUserMap(Map userMap) {
        this.userMap = userMap;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    public void setList(List list) {
        this.list = list;
    }

    public void insert() {
        System.out.println("insert running....");
    }

}

​ 配置文件进行注入


        
        
    

    
        
            aaa
            bbb
            ccc
        
    
    
        
            
        
    
    
        
            root
            root
        
    

​ 以上就是关于spring通过set方法注入普通数据类型、引用数据类型及集合数据类型的实例,大家可以试着练习一下,如果有问题可以直接在评论区问,看见肯定回复,互相学习。

2. spring-引入其他配置文件

​ 刚刚我们只写了一点点代码,配置文件已经有点小乱了,在实际开发中,配置文件内容更是繁多,所以,我们可以使用主配置文件加载其他配置文件的方式来进行管理,根据实际的项目分模块或者怎么样进行实际应用。加载其他配置文件只需要使用import标签即可。


​ 对了,前文忘记介绍一个小东西,spring配置文件的命名是无所谓的,只是大家习惯上使用applicationContext.xml,就当作一个约定俗成的东西去用就好了,没必要太多纠结这些无关痛痒的东西。

关于依赖注入的主要概念及应用方式已经介绍完毕了,希望大家可以多多练习,熟悉这种对象管理方式。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/952582.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号