Spring-DI
  TEZNKK3IfmPf 2023年11月13日 10 0
  • DI 也就是​​依赖注入​​,有一个那么高大上的词,其实也就是给类当中的属性设置值,前提条件下这个类必须要是 Spring 进行管理的
  • 前提必须有​​IOC​​ 的环境
  • 这个类被 Spring 管理的时候,才可以进行属性值注入也就是设置值
  • 依赖注入:就是对 Spring 管理的类,通过配置文件的形式进行赋值的过程

传统的方式

  • 接着上一篇文章的代码
  • 修改​​top.it6666.service.impl​​​ 目录下的​​UserDaoMySQLImpl​​​ 实现类,添加一个字段​​name​
  • 有 get/set 才叫属性没有就是叫字段

/**

 * @author: BNTang
**/
public class UserDaoMySQLImpl implements UserDao {

public String name;

...
}
  • 修改测试类的代码如下:

/**

 * @author: BNTang
**/
public class UserDaoTest {
@Test
public void save() {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

// 使用面向接口编程是没有办法设置属性值,所以我就以实现类来接收了
UserDaoMySQLImpl userDaoMySQL = (UserDaoMySQLImpl) applicationContext.getBean("userDao");
userDaoMySQL.name = "BNTang";

System.out.println(userDaoMySQL.name);
}
}

DI的方式

  • 实现类当中的属性要提供​​set方法​
  • 意思是如果要使用 DI 进行依赖注入,必须给字段提供 set 方法,因为它底层无非也就是需要调用 set 方法

/**

 * @author: BNTang
**/
public class UserDaoMySQLImpl implements UserDao {

...

public void setName(String name) {
this.name = name;
}

...
}
  • 在配置文件当中配置依赖注入,修改​​applicationContext.xml​
  • 通过一个​​property​​ 的标签进行配置
  • 这个标签有两个属性一个​​name​​​ 一个​​value​

 

  • name:需要注入的属性名称
  • value:需要注入的值
...

<bean id="userDao" class="top.it6666.service.impl.UserDaoMySQLImpl">
<property name="name" value="BNTang"/>
</bean>

...
  • 修改测试类代码如下:

 

/**
* @author: BNTang
**/
public class UserDaoTest {
@Test
public void save() {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

UserDaoMySQLImpl userDaoMySQL = (UserDaoMySQLImpl) applicationContext.getBean("userDao");
System.out.println(userDaoMySQL.name);
}
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
TEZNKK3IfmPf