一、什么是操作Bena管理
Bean管理指的是两个操作
(1).Spring创建对象
(2).Spring注入属性
二、Bean管理操作xml配置文件方式实现
1.基于xml方式创建对象
创建对象的时候默认执行无参构造方法
例:
<!--XML配置文件bean1.xml-->
<bean id="user" class="com.atqjb.Spring5.User"></bean>
package com.atqjb.Spring5;
//创建一个User类没有无参构造方法
//只有一个带参构造方法
public class User {
public User(Integer id) {
}
public void add(){
System.out.println("add......");
}
}
@Test
public void testAdd(){
//1加载spring配置文件
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
//获取配置创建对象
User user = context.getBean("user", User.class);
System.out.println(user);
user.add();
}
因为没有无参构造方法所以报错,找不到无参构造方法
2.基于xml方式注入属性
第一种方式:使用set方法进行注入
<!--配置User对象创建-->
<!--bean1.xml-->
<bean id="user" class="com.atqjb.Spring5.User">
<property name="name" value="Jack"/>
<property name="age" value="17"/>
</bean>
package com.atqjb.Spring5;
public class User {
String name;
Integer age;
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void printMes(){
System.out.println("name:"+name);
System.out.println("age:"+age);
}
}
@Test
public void testSet(){
//1加载spring配置文件
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
//获取配置创建对象
User user = context.getBean("user", User.class);
System.out.println(user);
user.printMes();
}
第二种方式:使用有参构造进行注入
<bean id="user" class="com.atqjb.Spring5.User">
<constructor-arg name="name" value="Jack"/>
<constructor-arg name="age" value="17"/>
</bean>
package com.atqjb.Spring5;
public class User {
String name;
Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public void printMes(){
System.out.println("name:"+name);
System.out.println("age:"+age);
}
}
@Test
public void testConstructor(){
//1加载spring配置文件
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
//获取配置创建对象
User user = context.getBean("user", User.class);
System.out.println(user);
user.printMes();
}
两种方式不同于在配置文件上,set注入用property来绑定内部的属性并调用set方法将value值进行赋值,而构造方法注入使用constructor-arg