java的SpringBoot框架想必大家已经熟练的使用,快速简单构建自己的项目,这也是设计SpringBoot框架的初衷。SpringBoot框架也是基于Spring的许多配置项进行了封装,实现了“约定大于配置"。但是过度依赖SpringBoot框架可能使我们遗忘了Spring底层的一些原理及配置,Spring底层也是Java面试中常问的点,写这篇博客记录一下Spring中xml配置bean的依赖注入。
1.新建一个maven构建的Spring项目
我用的是IDEA开发工具,File -> New -> Project 选择maven项目,点击Finish,Spring项目就建好了。如下图所示:
2.创建包及Student实体类
新建了一个包含大多数类型成员变量的Student实体类,属性注入set方法是必须的,具体代码如下:
public class Student {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
3.新建xml配置文件
resource -> 新建xml后缀的文件,此处beans.xml是我的文件,可以任意取名。xml文件先放入以下xml标签代码,也可以去Spring中文文档中复制。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
4.在xml中注册Student类
一对标签代表一个类的bean,bean中必须配置类的id和class属性,id可以理解为类的唯一标识,从Spring IOC容器上下文获取时需要id;class属性指定注册那个类。具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 对象的创建交给Spring容器管理 相当于new 类名()指定id和class属性-->
<bean id="student" class="com.hebeu.dao.Student"></bean>
</beans>
5.为Student实体类的属性注入值
在标签里定义属性配置标签,如果前面实体类没有属性set方法,这里就不能注入属性。属性配置标签有name和value属性。name是实体类中的属性名;value是你要赋的值。具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 对象的创建交给Spring容器管理 相当于new 类名() property相当于类中的set方法-->
<bean id="student" class="com.hebeu.pojo.Student">
<property name="name" value="张三"></property>
<property name="age" value="99"></property>
</bean>
</beans>
6.测试Student有没有注入成功
在test -> java ->新建一个MyTest的测试类。通过新建ClassPathXmlApplicationContext类加载beans.xml配置文件获取Spring IOC容器的上下文,再通过bean的id属性就可以获取一个Student对象了,需要强转一下类型。MyTest测试类代码如下:
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Student student = context.getBean("student", Student.class);
System.out.println(student);
}
}
运行结果如下:
7.总结
到此为止Spring的xml配置bean已经做完了,其实实体类成员变量有很多类型(引用类;list;set等),它们的配置方式不太一样,可以Spring中文文档中找一下它们的配置方法,练练手还是可以的。以此博客记录Spring xml文件配置bean的依赖注入。