Bean元素:使用该元素描述需要Spring容器管理的对象
- class属性:被管理对象的完整类名。
- name属性:给被管理的对象起的名字,获得对象时根据该name获取对象。(尽量使用)
- id属性:功能与name属性一样,但是不能重复且不能使用特殊字符。(原始)
Spring生成Bean的三种方式
空参构造创建
通过创建显式空参构造器,验证通过空参构造创建
User.java package cn.jjs.bean; public class User { public User() { System.out.println("User空参构造器"); } private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Demo.java package cn.jjs.helloSpring; import cn.jjs.bean.User; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Demo { @Test public void Test1() { //1. 创建容器对象 ApplicationContext ac = new ClassPathXmlApplicationContext("cn/jjs/b_create/applicationContext.xml"); //2. 向容器"要"user对象 User u = (User) ac.getBean("user"); //3. 打印对象 System.out.println(u); } }
applicationContext.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-3.0.xsd"> <!--name可以随意取名, 一般见名知意--> <bean name="user" class="cn.jjs.bean.User"></bean> </beans>
结果:
User空参构造器 cn.jjs.bean.User@21ed510d
-
静态工厂方式
调用UserFactory的createUser方法创建名为user1的对象。放入容器。
User.java package cn.jjs.bean; public class User { public User() { System.out.println("User空参构造器"); } private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
UserFactory.java package cn.jjs.b_create; import cn.jjs.bean.User; public class UserFactory { public static User createUser() { System.out.println("静态工厂创建User"); return new User(); } }
applicationContext.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-3.0.xsd"> <!--name可以随意取名, 一般见名知意--> <bean name="user1" class="cn.jjs.b_create.UserFactory" factory-method="createUser"></bean> </beans>
Demo.java package cn.jjs.helloSpring; import cn.jjs.bean.User; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Demo { @Test public void Test() { //1. 创建容器对象 ApplicationContext ac = new ClassPathXmlApplicationContext("cn/jjs/b_create/applicationContext.xml"); //2. 向容器"要"user对象 User u = (User) ac.getBean("user1"); //3. 打印对象 System.out.println(u); } @Test public void Test1() { //1. 创建容器对象 ApplicationContext ac = new ClassPathXmlApplicationContext("cn/jjs/bean/applicationContext.xml"); //2. 向容器"要"user对象 User u = (User) ac.getBean("user"); //3. 打印对象 System.out.println(u); } }
结果:
静态工厂创建User User空参构造器 cn.jjs.bean.User@17d8986
-
实例工厂方式
调用UserFactory对象的createUser1方法,创建名为user2的对象,放入容器。
UserFactory.java package cn.jjs.b_create; import cn.jjs.bean.User; public class UserFactory { public User createUser1() { System.out.println("实例工厂创建User"); return new User(); } }
applicationContext.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-3.0.xsd"> <bean name="user2" factory-bean="userFactory" factory-method="createUser1"></bean> <bean name="userFactory" class="cn.jjs.b_create.UserFactory"></bean> </beans>
Demo.java package cn.jjs.helloSpring; import cn.jjs.bean.User; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Demo { @Test public void Test2() { //1. 创建容器对象 ApplicationContext ac = new ClassPathXmlApplicationContext("cn/jjs/b_create/applicationContext.xml"); //2. 向容器"要"user对象 User u = (User) ac.getBean("user2"); //3. 打印对象 System.out.println(u); } }
Bean元素的scope属性
singleton
默认值,单例对象,被标记为单例的对象在Spring容器中之会有一个实例。
prototype
多例原型,被标记为多例的对象,每次获得时才会在容器中创建,每次创建都是新的对象。
request
web环境下,对象与request请求生命周期一致。
session
web环境下,对象与session生命周期一致。
Spring配置——Bean元素以及生成Bean元素的三种方式
最新推荐文章于 2022-09-19 21:17:55 发布