public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public interface UserService {
public User getServiceUser();
}
public class UserServiceImpl implements UserService {
private User user;
int age;
String name;
private List<User> listUser;
private Map<Object,Object> mapUser;
private Set<?> setUser;
private Properties properties;
/**
* 默认构造器<setter注入>
*/
public UserServiceImpl(){
System.out.println("默认构造器。。。");
}
/**
* 自定义构造器<构造器注入>
*/
public UserServiceImpl(String name,User user,int age) {
this.user=user;
this.age=age;
this.name=name;
System.out.println("自定义构造器。。。。");
}
/**
* 自定义实例化方法<static工厂方法返回对象实例>
*/
public static UserServiceImpl createInstance (String name,User user,int age) {
UserServiceImpl eb = new UserServiceImpl (name,user,age);
System.out.println("自定义实例化方法。。。");
return eb;
}
@Override
public User getServiceUser() {
// TODO Auto-generated method stub
User user =new User();
user.setAge(30);
user.setName("接口获取");
return user;
}
public void init(){
System.out.println("初始化。。。。");
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
System.out.println("setUser。。。。");
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public List<User> getListUser() {
return listUser;
}
public void setListUser(List<User> listUser) {
this.listUser = listUser;
System.out.println("setListUser。。。。");
}
public Map<Object, Object> getMapUser() {
return mapUser;
}
public void setMapUser(Map<Object, Object> mapUser) {
this.mapUser = mapUser;
}
public Set<?> getSetUser() {
return setUser;
}
public void setSetUser(Set<?> setUser) {
this.setUser = setUser;
}
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="user" class="javaP.User">
<property name="age" value="100"></property>
<property name="name" value="king"></property>
<property name="name"><value/></property><!--空字符串-->
<property name="name"><null/></property><!--null-->
</bean>
<!-- 构造器注入 -->
<bean id="userService" class="javaP.UserServiceImpl" init-method="init">
<constructor-arg type="java.lang.String" value="kkkkk" index="0"></constructor-arg>
<!-- 两种等价,后者覆盖前者 -->
<constructor-arg index="1">
<bean class="javaP.User"></bean>
</constructor-arg>
<constructor-arg index="1" ref="user"></constructor-arg>
<constructor-arg type="int" value="78000" index="2"></constructor-arg>
</bean>
<!-- static工厂方法返回对象实例 -->
<bean id="userService2" class="javaP.UserServiceImpl" factory-method="createInstance">
<constructor-arg type="java.lang.String" value="工厂方法返回实例" index="0"></constructor-arg>
<!-- 三种等价,后者覆盖前者 -->
<constructor-arg index="1" ref="user"></constructor-arg>
<constructor-arg index="1">
<!-- <ref bean="user"/> -->
<ref local="user"/>
</constructor-arg>
<constructor-arg index="1">
<bean class="javaP.User">
<property name="name" value="覆盖"></property>
</bean>
</constructor-arg>
<constructor-arg type="int" value="78000" index="2"></constructor-arg>
</bean>
<!-- setter注入 -->
<bean id="userService3" class="javaP.UserServiceImpl">
<!-- map的key或value值,或set的value值还可以是以下元素:bean | ref | idref | list | set | map | props | value | null -->
<!-- 注入对象 -->
<!-- <property name="user" ref="user"></property> -->
<property name="user">
<ref local="user"/>
</property>
<!-- 注入变量 -->
<property name="name" value="xxxx"></property>
<property name="age" value="18"></property>
<!-- 注入list集合 -->
<property name="listUser">
<list>
<ref bean="user"/>
<ref bean="user"/>
</list>
</property>
<!-- 注入Map集合 -->
<property name="mapUser">
<map>
<entry>
<key>
<value>实体1key</value>
</key>
<value>实体1value</value>
</entry>
<entry>
<key>
<value>实体2key</value>
</key>
<ref local="user"/>
</entry>
<entry>
<key><null></null></key>
<value></value>
</entry>
<entry key="two" value="50"/>
</map>
</property>
<!-- 注入Set集合 -->
<property name="setUser">
<set>
<ref bean="user" />
<value>第二个对象</value>
<map>
<entry>
<key><value>map對象key</value></key>
<value>map對象value</value>
</entry>
</map>
<list>
<ref bean="user"/>
<ref bean="user"/>
</list>
</set>
</property>
<!-- 注入Properties值 -->
<property name="properties">
<props>
<prop key="key1">key1@example.org</prop>
<prop key="key2">key2@example.org</prop>
<prop key="key3">key3@example.org</prop>
</props>
</property>
</bean>
</beans>
public class UserControll {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"configer.xml"});
// BeanFactory context =new XmlBeanFactory(new FileSystemResource("D:/JAVA/Workspace2/javaP/src/configer.xml"));
System.out.println("控制反转实例化bean==============");
UserService userService=(UserService)context.getBean("userService");
User user=(User)userService.getServiceUser();
System.out.println(user.getAge());
System.out.println(user.getName());
System.out.println("构造器注入==============");
UserServiceImpl userServiceImpl=(UserServiceImpl)context.getBean("userService");
user=(User)userServiceImpl.getUser();
System.out.println(user.getAge());
System.out.println(user.getName());
System.out.println(userServiceImpl.age);
System.out.println(userServiceImpl.name);
System.out.println("static工厂方法返回对象实例==============");
UserServiceImpl userServiceImpl2=(UserServiceImpl)context.getBean("userService2");
user=(User)userServiceImpl2.getUser();
System.out.println(user.getAge());
System.out.println(user.getName());
System.out.println(userServiceImpl2.age);
System.out.println(userServiceImpl2.name);
System.out.println("setter注入==============");
UserServiceImpl userServiceImpl3=(UserServiceImpl)context.getBean("userService3");
user=(User)userServiceImpl3.getUser();
System.out.println(user.getAge());
System.out.println(user.getName());
System.out.println(userServiceImpl3.age);
System.out.println(userServiceImpl3.name);
System.out.println("setter注入List集合==============");
System.out.println(userServiceImpl3.getListUser());
System.out.println("setter注入Map集合==============");
System.out.println(userServiceImpl3.getMapUser());
System.out.println("setter注入Set集合==============");
System.out.println(userServiceImpl3.getSetUser());
System.out.println("setter注入Properties值==============");
System.out.println(userServiceImpl3.getProperties());
System.out.println("关闭IOC容器。。。。。。。。。。。。。。。");
AbstractApplicationContext abcontext=(AbstractApplicationContext)context;
abcontext.registerShutdownHook();
}
}