基于xml的DI-Javaspring注入分类:
1,set注入:
set注入就是设值注入,通过setter方法传入被调用者的实例,这种注入方法简单,所以在spring依赖注入中被大量使用,(下面举个栗子):
pom.xml依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.zzcj</groupId>
<artifactId>spring_ioc</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories><!-- 代码库 -->
<repository>
<id>maven-ali</id>
<url>http://maven.aliyun.com/nexus/content/groups/public//</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
(1),首先需要创建student类:
public class Student {
private String name;
//创建toString方法。
@Override
public String toString() {
return "name:"+name
}
public void setName(String name) {
this.name = name;
}
}
(2),然后创建.xml文件(这里我们命名为somesevers-ioc.xml)
spring配置文件
<bean class="Student" id="student">
<property name="name" value="小明"/><!--setName:小明-->
</bean>
(3),创建test类进行测试(这里我们命名为test02):
public class test02 {
@Test
public void test(){
ApplicationContext ioc = new ClassPathXmlApplicationContext("somesevers-ioc.xml");
Object bean1 = ioc.getBean("student");
System.out.println(bean1);
}
}
通过java.util.Data包获取时间:
spring 配置文件:
<bean class="java.util.Date" id="data">
<property name="time" value="14342123"/><!--value"******"设值默认时间-->
</bean>
关 于 s e t 方 法 还 有 引 用 类 型 , 也 就 是 在 s p r i n g 的 x m l 文 件 中 b e a n 可 以 被 其 他 b e a n 调 用 \color{red}{关于set方法还有引用类型,也就是在spring的xml文件中bean可以被其他bean调用} 关于set方法还有引用类型,也就是在spring的xml文件中bean可以被其他bean调用
例如此时有:
<bean name="Student" value="student">
<property name="name" value="小明"/>
<property name="age" value="21"/>
</bean>
此时在创建一个
<bean name="School" value="school">
<property name="name" value="北京大学"/>
<property name="add" value="北京市海淀区"/>
<property name="student" ref="student">//此时链接到student也就是说会得到学校和学生的全部属性
</bean>
这样运行出来就是school和student的全部属性了。
2,构造注入:
构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。即,使用构造器设 置依赖关系。
在我看来和set差不多,emmmm需要在研究研究。
public Student(String myname,int myage){
System.out.println("student的有参数构造方法");
this.name = myname;
this.age = myage;
}
构造bean:
<bean name="School" value="school">
<constructor name="name" value="北京大学"/>
<constructor name="add" value="北京市海淀区"/>
<constructor name="student" ref="student">
//此时链接到student也就是说会得到学校和学生的全部属性
</bean>