Spring 创建对象的三种方式以及给 Bean 的属性赋值

    技术2024-10-18  25

    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>
    Processed: 0.009, SQL: 9