spring之bean管理

    科技2022-07-16  133

    spring之bean管理

    文章目录

    spring之bean管理一、bean是什么?二、使用步骤1.基于xml的方式创建bean对象,注入属性2.基于xml方式创建bean对象,注入外部bean,注入list,map,set等等 总结


    一、bean是什么?

    在软件应用中由Spring管理的所有的对象都称之为Bean,如果使用了spring框架那么我们自己创建的类都需要由Spring管理,首先需要对这个类进行配置。

    二、使用步骤

    1.基于xml的方式创建bean对象,注入属性

    代码如下 首先bean对象的定义如下:

    package com.lhh.model; public class Pig { private int age; private String name; public Pig(int age, String name) { this.age = age; this.name = name; } @Override public String toString() { return "Pig{" + "age=" + age + ", name='" + name + '\'' + '}'; } /*通过set方法进行注入age*/ public void setAge(int age) { this.age = age; } /*通过set方法进行注入name*/ public void setName(String name) { this.name = name; } public Pig() { } } <!--创建一个类,class属性定义该类的全限定类名,id用于给类起别名,这个别名用于 测试的时候,拿到该bean对象,然后进行相关的操作。bean标签里面的property标签用于注入属性,也就是给属性中设置值(这里使用的是set方法进行注入,其实还可以使用构造方法进行注入。) --> <bean id="pig" class="com.lhh.model.Pig"> <property name="age" value="15"></property> <property name="name" value="张三"></property> </bean> <!--通过构造函数进行属性的注入--> <bean id="pig" class="com.lhh.model.Pig"> <constructor-arg name="age" value="19"></constructor-arg> <constructor-arg name="name" value="张三"></constructor-arg> </bean>

    使用bean:

    @Test public void testShuXing() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Pig pig = (Pig) context.getBean("pig"); System.out.println(pig); }

    2.基于xml方式创建bean对象,注入外部bean,注入list,map,set等等

    代码如下(示例): 首先定义一个bean

    package com.lhh.spring1; import org.springframework.beans.factory.BeanFactory; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Set; public class Teacher { private List<String> list; private int[]array; private Map<String,String> stringMap; private Set<String> stringSet; private List<User> userList; private Map<String,User> stringUserMap; public void setList(List<String> list) { this.list = list; } @Override public String toString() { return "Teacher{" + "list=" + list + ", array=" + Arrays.toString(array) + ", stringMap=" + stringMap + ", stringSet=" + stringSet + ", userList=" + userList + ", stringUserMap=" + stringUserMap + '}'; } public void setArray(int[] array) { this.array = array; } public void setStringMap(Map<String, String> stringMap) { this.stringMap = stringMap; } public void setStringSet(Set<String> stringSet) { this.stringSet = stringSet; } public void setUserList(List<User> userList) { this.userList = userList; } public void setStringUserMap(Map<String, User> stringUserMap) { this.stringUserMap = stringUserMap; } }

    对应的核心配置文件中的bean的具体配置如下:

    <!--测试数组集合list,map,set的注入,以及list范型对象,和map范型对象的注入--> <bean id="teacher" class="com.lhh.spring1.Teacher"> <!--注入数组--> <property name="array"> <array> <value>12</value> <value>13</value> <value>14</value> <value>15</value> <value>16</value> </array> </property> <!--注入list集合--> <property name="list"> <list> <value>zhangsan</value> <value>lishi</value> <value>wangwu</value> <value>zhaoliu</value> </list> </property> <!--<property name="list" ref="list"></property>--> <!--注入set--> <property name="stringSet"> <set> <value>123</value> <value>456</value> <value>789</value> </set> </property> <!--注入map集合--> <property name="stringMap"> <!--注入了三条数据--> <map> <entry key="zhangsan" value="16"></entry> <entry key="zhaoliu" value="19"></entry> <entry key="wangwu" value="20"></entry> </map> </property> <!--注入带有对象的list集合--> <property name="userList"> <list> <ref bean="user"></ref> <ref bean="user1"></ref> </list> </property> <!--注入带有对象的map集合的注入--> <property name="stringUserMap"> <map> <entry key="zhangsan" value-ref="user"></entry> <entry key="zhangsan" value-ref="user1"></entry> </map> </property> </bean> 在teacher这个bean当中,里面的属性需要使用这个外部list,那么就直接在内部引用就好了。另外使用这个提取list集合的属性注入,需要导入约束,util 分别为: xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" <!--提取list集合的属性注入--> <util:list id="list"> <list> <value>123456</value> <value>456123</value> <value>156324</value> </list> </util:list>

    总结

    外部bean的注入: 可以使用set方法注入,也可以使用构造注入。只不过在xml文件当中,bean标签里面的property标签使用ref属性引入外部bean

    属性注入: 有基本数据类型的注入,也有数组,集合类型的属性注入,再者,可以有对象类型的集合的注入。这个时候,需要使用引用外部的bean对象。

    Processed: 0.009, SQL: 8