Bean的实例化
bean实例化方式有3种:默认构造、静态工厂、实例工厂
默认构造
调用无参构造, 属性+setter
User.java
package entity; public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User [>; } }
ApplicatitonContext.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"> <!-- 1.默认调用无参构造 属性+setter name:真实赋值使用setter方法 scope:作用域 --> <bean id="user" class="entity.User"> <property name="id" value="1"></property> <property name="name" value="zs"></property> </bean> </beans>
Test.java
package test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import entity.User; public class Test { @org.junit.Test public void test() { ApplicationContext context = new ClassPathXmlApplicationContext("ApplicatitonContext.xml"); User user = context.getBean("user",User.class); System.out.println(user); } }
运行结果
二月 01, 2018 8:19:43 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2a33fae0: startup date [Thu Feb 01 20:19:43 CST 2018]; root of context hierarchy 二月 01, 2018 8:19:44 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [ApplicatitonContext.xml] User [id=1, name=zs]
调用有参构造 属性+有参构造
User.java
package entity; public class User { private int id; private String name; public User(int id, String name) { super(); this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User [>; } }
ApplicatitonContext.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"> <!-- 2.调用有参构造 属性+有参构造 constructor-arg: name:属性名称 value:简单类型的值 ref:引用 index:参数的索引 type:参数的类型 --> <bean id="user" class="entity.User"> <constructor-arg name="id" value="1" ></constructor-arg> <constructor-arg name="name" value="lisi"></constructor-arg> <!-- <constructor-arg index="0" type="int" value="1"></constructor-arg> <constructor-arg index="1" value="zs"></constructor-arg> --> </bean> </beans>
Test.java
package test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import entity.User; public class Test { @org.junit.Test public void test() { ApplicationContext context = new ClassPathXmlApplicationContext("ApplicatitonContext.xml"); User user = context.getBean("user",User.class); System.out.println(user); } }
运行结果
二月 01, 2018 8:23:39 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2a33fae0: startup date [Thu Feb 01 20:23:39 CST 2018]; root of context hierarchy 二月 01, 2018 8:23:39 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [ApplicatitonContext.xml] User [id=1, name=lisi]
静态工厂
User.java
package entity; public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User [>; } }