bean.xml的配置如下“
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--完成user对象创建
bean标签
id属性:bean的唯一标识
class属性:要创建对象所在类的全路径(包名称+类名称)
-->
<bean id="user" class="com.kiong.spring6.User"></bean>
</beans>
User类如下
package com.kiong.spring6;
public class User {
public User() {
System.out.println("无参构造执行了!");
}
public void add(){
System.out.println("add...");
}
public static void main(String[] args) {
// User user = new User();
// user.add();
}
}
三种获取bean方法如下:
package com.kiong.spring6;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestUser {
@Test
public void testUser() {
//加载spring配置文件,创建对象
ApplicationContext context =
new ClassPathXmlApplicationContext("bean.xml");
//获取创建的对象
//1、根据id获取bean
User user1 = (User)context.getBean("user");
System.out.println("1.根据id获取bean:"+user1);
//2、根据类型获取bean
User user2 = (User)context.getBean(User.class);
System.out.println("2.根据类型获取bean:"+user1);
//3、根据id和类型获取bean
User user3 =(User)context.getBean("user",User.class);
System.out.println("3.根据id和类型获取bean:"+user3);
}
}
输出结果
注意,如果Bean.xml中,存在相同的bean的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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.kiong.spring6.User"></bean>
<bean id="user1" class="com.kiong.spring6.User"></bean>
</beans>
运行TestUser类抛出错误----编译器不知道是哪个类型。
此时,只用方法1、3