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();
}
}
spring中Bean的几种配置(ioc原理续)
最新推荐文章于 2025-12-04 08:05:34 发布
本文介绍如何使用Spring框架的IOC容器创建并管理Java对象。通过示例展示了依赖注入的两种方式:setter注入和构造器注入,并演示了如何配置集合类型的依赖。
2812

被折叠的 条评论
为什么被折叠?



