Spring的DI依赖注入详解

网友投稿 233 2022-09-02


Spring的DI依赖注入详解

目录1、什么是DI依赖注入?2、利用 set 方法给属性赋值3、利用 构造函数 给属性赋值总结:

1、什么是DI依赖注入?

spring动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。

简单来说什么是依赖注入,就是给属性赋值(包括基本数据类型和引用数据类型)

2、利用 set 方法给属性赋值

第一步:创建工程,并导入相应的 jar 包

第二步:创建实体类 Person

package com.ys.di;

import java.util.List;

import java.util.Map;

import java.util.Properties;

import java.util.Set;

public class Person {

private Long pid;

private String pname;

private Studenhttp://t students;

private List lists;

private Set sets;

private Map maps;

private Properties properties;

public Long getPid() {

return pid;

}

public void setPid(Long pid) {

this.pid = pid;

}

public String getPname() {

return pname;

}

public void setPname(String pname) {

this.pname = pname;

}

public Student getStudents() {

return students;

}

public void setStudents(Student students) {

this.students = students;

}

public List getLists() {

return lists;

}

public void setLists(List lists) {

this.lists = lists;

}

public Set getSets() {

return sets;

}

public void setSets(Set sets) {

this.sets = sets;

}

public Map getMaps() {

return maps;

}

public void setMaps(Map maps) {

this.maps = maps;

}

public Properties getProperties() {

return properties;

}

public void setProperties(Properties properties) {

this.properties = properties;

}

}

我们看到这个实体类包括引用类型 Student 类,基本数据类以及集合数据类型。

第三步:在 applicationContext.xml 中进行赋值

1

vae

1

vae

p1

p2

第四步:测试

//利用 set 方法给对象赋值

@Test

public void testSet(){

//1、启动 spring 容器

//2、从 spring 容器中取出数据

//3、通过对象调用方法

ApplicationContext context =

new ClassPathXmlApplicationContext("applicationContext.xml");

Person person = (Person) context.getBean("person");

System.out.println(person.getPname());//vae

}

3、利用 构造函数 给属性赋值

第一步:在实体类 Per'son.java 中添加两个构造方法:有参和无参

//默认构造函数

public Person(){}

//带参构造函数

public Person(Long pid,Student students){

this.pid = pid;

this.students = students;

}

第二步:在 applicationContext.xml 中进行赋值

第三步:测试

//利用 构造函数 给对象赋值

@Test

public void testConstrutor(){

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

Person person = (Person) context.getBean("person_con");

System.out.println(person.getPid());//1

}

总结:

1、如果spring的配置文件中的bean中没有该元素,则调用默认的构造函数

2、如果spring的配置文件中的bean中有该元素,则该元素确定唯一的构造函数

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python 线程&进程与协程(python是什么意思)
下一篇:Python 面向对象编程详解(python入门教程(非常详细))
相关文章

 发表评论

暂时没有评论,来抢沙发吧~