Spring中Bean之间的依赖的实现方式dv发的个

解决Spring中Bean之间的依赖的实现方式,在Spring的概念中就被称之为依赖注入(Dependency Injection,DI)。普遍认为的Spring依赖注入的实现方式有三种:构造方法注入、setter方法注入、注解注入。但,就我而言,我认为应该划分为两种形式——基于XML注入和基于注解注入,然后再细分为下面的形式:

DI实现.png

基于XML的注入方式是我们最先学习和使用的方式,也是最熟悉的方式,就简单的做个介绍,举个例子。

通过构造方法注入
public class UserServiceImpl implements UserService {

private UserDao userDao;

public UserServiceImpl(UserDao userDao) {
    this.userDao = userDao;
}

/**继承自UserService的方法**/

首先定义一个服务层UserServiceImpl,然后在其内部增加对dao层的引用userDao。

接下来就是添加一个构造方法public UserServiceImpl(UserDao userDao)以待Spring通过这个方法为userDao注入实例。

最后在Spring XML配置文件中注入相应的bean实例。

通过构造方法的注入,必须要注入类中具有对应的构造方法,若没有对应的构造方法,会出现报错。

通过setter方法注入
修改UserServiceImpl.java为:

public class UserServiceImpl implements UserService {

private UserDao userDao;

public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
}

/**继承自UserService的方法**/

}

再修改XML文件内容为:

这两种方式的区别在于,一、UserServiceImpl.java可以不用添加构造方法,但是必须存在一个无参构造方法(如public UserServiceImpl(),示例里面没写,是因为java默认会提供一个无参构造方法)以供Spring 容器注册生成Bean(如userService)。二、XML文件中,采用构造方法注入时,需要使用这对标签;而在setter方法注入时,使用标签。

在XML注入过程中,除了使用ref=""引用之外,还可以使用value=""设定具体的值,其效果和使用注解@Value差不多。

基于注解的依赖注入
@Autowired

上一篇:mybatis crud基础


下一篇:给力啊!这篇Spring Bean的依赖注入方式笔记总结真的到位,没见过写的这么细的