Bean作用域的配置以及 Spring各种注入方式实例 list set map props

1.Bean有两种作用域属性,singletonprototype ,默认为前者。对于singleton,当请求的 Bean 相同时,则不再重新生成新的实例化对象,通常应用程序中的组多组件都只需要一个实例就足够了。而 prototype ,用于每次返回 Bean 的一个新的实例,例如需要获取系统实时时间。

<bean id="mydate" class="com.lihui.MyDate" scope="prototype"></bean>

 

2.各种注入方式

所有的注入方式在Spring.xml 文件中配置如下:

 1 <?xml version="1.0" encoding="UTF-8"?>

 2 <beans

 3     xmlns="http://www.springframework.org/schema/beans"

 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 5     xmlns:p="http://www.springframework.org/schema/p"

 6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 7 

 8     <!-- 注入基本类型 -->

 9     <bean id="person" class="com.lihui.Person">

10         <property name="name" value="张三"></property>

11         <property name="password" value="hello"></property>

12         <property name="chock" value="true"></property>

13     </bean>

14     

15     <!-- 注入list类型和数组类型-->

16     <bean id="beansDemoClass" class="com.lihui.BeansDemoClass">

17         <property name="fruit">

18             <list>

19                 <value>荔枝</value>

20                 <value>桔子</value>

21                 <value>樱桃</value>

22             </list>

23         </property>

24         <property name="num">

25             <list>

26                 <value>20</value>

27                 <value>45</value>

28                 <value>12</value>

29             </list>

30         </property>

31     </bean>

32      

33     <!-- 注入引用类型 -->

34     <bean id="mydate" class="com.lihui.MyDate" scope="prototype">

35         <property name="date" ref="refdate"></property>

36     </bean>

37     <bean id="refdate" class="java.util.Date" scope="prototype"></bean>

38     

39     <!-- 注入 set map props 类型 -->

40     <bean id="gatherDemp" class="com.lihui.SetMapProps">

41         <property name="scoreMap">

42             <map>

43                 <!-- map 必须是 key-value 对应的 -->

44                 <entry key="Maths">

45                     <value>98</value>

46                 </entry>

47                 <entry key="English">

48                     <value>95</value>

49                 </entry>

50             </map>

51         </property>

52         <property name="properties">

53             <!-- 定义 properties 属性 -->

54             <props>

55                 <!-- props 必须是 key-value 对应的 -->

56                 <prop key="path">C:/MyDocument/MyMusic</prop>

57                 <prop key="filename">lihui.txt</prop>

58             </props>

59         </property>

60         <property name="settest">

61             <set>

62                 <!-- set元素,使用value、bean、ref 等指定系列值 -->

63                 <value>set值</value>

64             </set>

65         </property>

66     </bean>

67 </beans>

 

(1)基本注入方式

person.java

 1 public class Person {

 2     public String name;

 3     public String password;

 4     public boolean islogin;

 5     

 6     public void setName(String name){

 7         this.name = name;

 8     }

 9     public void setPassword(String password){

10         this.password = password;

11     }

12     public void setChock(boolean islogin){

13         this.islogin = islogin;

14     }

15 }

调用方法:

1 public static void main(String[] args) {

2         XmlBeanFactory bFactory = new XmlBeanFactory(new ClassPathResource(

3                 "Spring.xml"));

4         Person person = (Person) bFactory.getBean("person");

5         System.out.println("姓名:" + person.name + "  密码:" + person.password

6                 + "  状态:" + person.islogin);        

7     }

(2)注入引用类型

MyDate.java

1 public class MyDate {

2     private Date date;

3     public void setDate(Date date){

4         this.date = date;

5     }

6     public void getDate(){

7         System.out.println(date);

8     }

9 }

应用举例:

 1 public static void main(String[] args) {

 2         XmlBeanFactory bFactory = new XmlBeanFactory(new ClassPathResource("Spring.xml"));

 3         MyDate myDate = (MyDate)bFactory.getBean("mydate");

 4         myDate.getDate();

 5         try {

 6             Thread.sleep(1000);

 7         } catch (InterruptedException e) {

 8             // TODO Auto-generated catch block

 9             e.printStackTrace();

10         }

11         ((MyDate)bFactory.getBean("mydate")).getDate();                

12     }

(3)注入list类型和数组类型

BeansDemoClass.java

 1 public class BeansDemoClass {

 2     public List<String> fruit;

 3     public int[] num;

 4     public void setFruit(List<String> fruit){

 5         this.fruit = fruit;

 6         for(String f : fruit){

 7             System.out.println(f);

 8         }

 9     }

10     public void setNum(int[] num){

11         this.num = num;

12         for(int n : num){

13             System.out.println(n);

14         }

15     }

16 }

应用举例:

1 public static void main(String[] args) {

2         XmlBeanFactory bFactory = new XmlBeanFactory(new ClassPathResource("Spring.xml"));

3         BeansDemoClass bDemoClass = (BeansDemoClass)bFactory.getBean("beansDemoClass");

4         System.out.println(bDemoClass.fruit + "   " + bDemoClass.num);            

5     }

(4)注入set、map 及 props 类型
SetMapProps.java

 1 public class SetMapProps {

 2     public Map scoreMap = new HashMap<String, String>();

 3     public Properties properties = new Properties();

 4     public Set settest = new HashSet<String>();

 5     public void setScoreMap(Map scoreMap){

 6         this.scoreMap = scoreMap;

 7         System.out.println(this.scoreMap.get("English"));

 8     }

 9     public void setProperties(Properties properties){

10         this.properties = properties;

11         System.out.println(this.properties.get("path"));

12         System.out.println(this.properties.get("filename"));

13     }

14     public void setSettest(Set settest){

15         this.settest = settest;

16         System.out.println(settest.toString());

17     }

18 }

应用:

1 public static void main(String[] args) {

2         XmlBeanFactory bFactory = new XmlBeanFactory(new ClassPathResource("Spring.xml"));

3         SetMapProps beans = (SetMapProps) bFactory.getBean("gatherDemp");

4                 

5     }

 

 

 

 

 

 

你可能感兴趣的:(spring)