spring中Bean的几种配置(ioc原理续)

来源:互联网 发布:angularjs循环数组 编辑:程序博客网 时间:2024/05/18 01:07

1,首先准备几个bean类:
package com.svse.spring.ioc;
(1)
public class Dog {
public void sound()
{
System.out.println("wang wang wang....");
}
}
(2)
package com.svse.spring.ioc;

public class User {
private String userName = null;
private int userAge = 0;
private Dog dog = null;

public User()
{
System.out.println("user constructor() called.");
}

/**
*
调用setter方法注入值
* @param userName
*/
public void setUserName(String userName)
{
System.out.println("setUserName() called.");
this.userName = userName;
}

/**
*
调用setter方法注入值
* @param userAge
*/
public void setUserAge(int userAge)
{
System.out.println("setUserAge() called.");
this.userAge = userAge;
}

/**
*
调用setter方法注入值
* @param dog
*/
public void setDog(Dog dog) {
this.dog = dog;
}

public void doDog()
{
this.dog.sound();
}
}
(3)
package com.svse.spring.ioc;

public class User1 {
private String userName = null;
private int userAge = 0;
private Dog dog = null;

public User1(String userName,int userAge,Dog dog) {
this.userName = userName;
this.userAge = userAge;
this.dog = dog;

System.out.println("userName:" + userName + "," + "userAge:" + userAge);
this.dog.sound();
}
}
(4)
package com.svse.spring.ioc;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class User2 {
private List myList = null;
private Map myMap = null;

public void setMyList(List myList) {
this.myList = myList;
}

public void setMyMap(Map myMap) {
this.myMap = myMap;
}

public void print()
{
System.out.println("-------list-------");
for(int i = 0 ; i < myList.size(); i++)
{
String s = (String)myList.get(i);
System.out.println(s);
}
System.out.println("-------list-------");

System.out.println("-------map-------");
for(Iterator it = myMap.keySet().iterator(); it.hasNext();)
{
String key = (String)it.next();
String value = (String)this.myMap.get(key);
System.out.println("key:" + key + "," + "value:" + value);
}
System.out.println("-------map-------");
}
}

2,
在所建工程中添加spring-core.jar spring-beans.jar spring-context.jar
applicationContext.xml文件中对上面的具体实现类进行装配:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dogInstance" class="com.svse.spring.ioc.Dog"></bean>

<!--
User user = new User();
user.setUserName("jason");
user.setUserAge(22);
-->
<bean id="user" class="com.svse.spring.ioc.User" >
<property name="userName" value="jason"></property>
<property name="userAge" value="22"></property>
<property name="dog" ref="dogInstance"></property>
</bean>

<!--
User1 user1 = new User1("david",26,dog);
-->
<bean id="user1" class="com.svse.spring.ioc.User1">
<constructor-arg type="java.lang.String" value="david"></constructor-arg>
<constructor-arg type="int" value="26"></constructor-arg>
<constructor-arg type="com.svse.spring.ioc.Dog" ref="dogInstance"></constructor-arg>
</bean>

<!--
注入集合 -->
<bean id="user2" class="com.svse.spring.ioc.User2">
<property name="myList">
<list>
<value>list1</value>
<value>list2</value>
<value>list3</value>
<value>list4</value>
<value>list5</value>
</list>
</property>

<property name="myMap">
<map>
<entry key="aKey" value="aValue"></entry>
<entry key="bKey" value="bValue"></entry>
<entry key="cKey" value="cValue"></entry>
<entry key="dKey" value="dValue"></entry>
</map>
</property>
</bean>
</beans>

3,
编写测试类

package com.svse.spring.ioc;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class IOCMain {

/**
*
测试
*/
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
//        User user = (User)context.getBean("user");
//        user.doDog();

//User1 user1 = (User1)context.getBean("user1");
User2 user2 = (User2)context.getBean("user2");
user2.print();
}

}

原创粉丝点击