Spring-DI

什么是DI

  • 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);
    }
}
posted @   BNTang  阅读(63)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示