Spring 创建对象的三种方式以及给 Bean 的属性赋值
Spring 创建对象的三种方式
-
通过构造方法方法创建 无参构造创建:默认情况下 有参构造创建:需要明确的配置 需要在实体类中创建有参构造 需要在applicationContext.xml 中详细配置 如果设定的条件匹配多个构造方法,执行配置中最后一个
<bean id="peo" class="com.mak.pojo.People"> <constructor-arg index="0" name="id" type="int" value="123"> </constructor-arg> <constructor-arg index="1" name="name" type="java.lang.String" value=" 张 三 "> </constructor-arg> </bean>
-
测试
public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); People people = ac.getBean("peo",People.class); System.out.println(people); } >>> People [id=123, name=张三]
-
实例工厂 工厂设计模式:帮助创建类对象,一个工厂可以生产多个对象 需要先创建工厂,才能生产对象
public class PeopleFactory { public People newInstance(){ return new People(1,"测试"); } }
-
xml
<bean id="factory" class="com.mak.pojo.PeopleFactory"></bean> <bean id="peo1" factory-bean="factory" factory-method="newInstance"></bean>
测试方法一样
-
静态工厂 使用时,不需要创建工厂,快速创建对象 编写一个静态工厂(在方法上添加 static)
public class PeopleFactory { public static People newInstance(){ return new People(1,"测试"); } }
-
xml
<bean id="peo2" class="com.mak.pojo.PeopleFactory" factory-method="newInstance"></bean>
Spring 给 Bean 的属性赋值(注入)
-
通过构造方法设置值 设置注入(通过 set 方法) 如果属性是基本数据类型或 String
<bean id="peo" class="com.mak.pojo.People"> <property name="id" value="222"></property> <property name="name"> <value>zhangsan</value> </property> </bean>
-
属性是Set<?>
<property name="sets"> <set> <value>1</value> <value>2</value> <value>3</value> <value>4</value> </set> </property>
-
属性是List<?>
<property name="list"> <list> <value>1</value> <value>2</value> <value>3</value> </list> </property>
-
属性是数组
<property name="strs" > <array> <value>1</value> <value>2</value> <value>3</value> </array> </property>
-
属性是map
<property name="map"> <map> <entry key="a" value="b" > </entry> <entry key="c" value="d" > </entry> </map> </property>
-
属性是Properties
<property name="demo"> <props> <prop key="key">value</prop> <prop key="key1">value1</prop> </props> </property>
DI
-
依赖注入 (Dependency Injection) DI 和 IoC 是一样的 当一个类(A)中需要依赖另一个类()对象时,把 B 赋值给 A 的过程就叫做依赖注入
<bean id="peo" class="com.mak.pojo.People"> <property name="desk" ref="desk"></property> </bean> <bean id="desk" class="com.mak.pojo.Desk"> <property name="id" value="1"></property> <property name="price" value="12"></property> </bean>
上一篇:
IDEA上Java项目控制台中文乱码