Spring的注入方法小结

 

Spring的注入方法小结

1.setter注入:
beans.xml:

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

<!--
  - Application context definition for JPetStore's business layer.
  - Contains bean references to the transaction manager and to the DAOs in
  - dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
  -->

<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop
="http://www.springframework.org/schema/aop"
        xmlns:tx
="http://www.springframework.org/schema/tx"
        xsi:schemaLocation
="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

    
    
<bean name="userDao" class="com.linying.dao.UserDao"></bean>
    
    
<bean name="userDomain" class="com.linying.domain.User"></bean>
    
    
<bean name="userAction" class="com.linying.service.UserAction">
        
<property name="user" ref="userDomain"></property>
        
<property name="userDao" ref="userDao"></property>    
    
</bean>    
    
</beans>


User.java:

package com.linying.domain;

/**
 * 
领域对象
 * 
 * 
@author Ying-er
 * @time 2010-6-20 
上午10:01:05
 * @mail melody.crazycoding@gmail.com
 * 
@version 1.00
 */

public class User {
    
private int id;

    
private String name;

    
private String password;

    
public User() {
        System.out.println("User
构造");
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

    
public String getPassword() {
        
return password;
    }

    
public void setPassword(String password) {
        
this.password = password;
    }

    
public int getId() {
        
return id;
    }

    
public void setId(int id) {
        
this.id = id;
    }
}


UserDao.java:

package com.linying.dao;

import com.linying.domain.User;

/**
 * UserDao
 * 
 * 
@author Ying-er
 * @time 2010-6-20 
上午10:17:55
 * @mail melody.crazycoding@gmail.com
 * 
@version 1.00
 */

public class UserDao {
    
public UserDao() {
        System.out.println("UserDao
构造");
    }

    
public void insert(User user) {
        System.out.println("
执行insert方法");
    }
}


UserAction.java:

package com.linying.service;

import com.linying.dao.UserDao;
import com.linying.domain.User;

/**
 * UserAction
 * 
 * 
@author Ying-er
 * @time 2010-6-20 
上午10:28:16
 * @mail melody.crazycoding@gmail.com
 * 
@version 1.00
 */

public class UserAction {
    
private User user;

    
private UserDao userDao;

    
public UserAction() {
        System.out.println("UserAction
构造");
    }

    
/**
     * 
保存User对象
     * 
     */

    
public void saveUser() {
        userDao.insert(user);
        System.out.println("saveUser
方法被调用");
    }

    
public void setUser(User user) {
        
this.user = user;
        System.out.println("setUser
方法被调用");
    }

    
public void setUserDao(UserDao userDao) {
        
this.userDao = userDao;
        System.out.println("setUserDao
方法被调用");
    }


}


测试——Main.java:

package com.linying;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.linying.service.UserAction;

/**
 * 
测试程序入口
 * 
 * 
@author Ying-er
 * @time 2010-6-20 
上午11:20:24
 * @mail melody.crazycoding@gmail.com
 * 
@version 1.00
 */

public class Main {

    
/**
     * 
@param args
     */

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        BeanFactory bf = (BeanFactory) (new ClassPathXmlApplicationContext(
                "beans.xml"));

        UserAction userAction = (UserAction) bf.getBean("userAction");
        userAction.saveUser();

    }

}


控制台输出:
UserDao
构造
User
构造
UserAction
构造
setUser
方法被调用
setUserDao
方法被调用
执行insert方法
saveUser
方法被调用

2.
静态工厂注入
修改beans.xml:

    <bean name="userDao" class="com.linying.factory.DaoFactory" factory-method="getUserDao"></bean>
    
    
<bean name="userDomain" class="com.linying.domain.User"></bean>
    
    
<bean name="userAction" class="com.linying.service.UserAction">
        
<property name="user" ref="userDomain"></property>
        
<property name="userDao" ref="userDao"></property>    
    
</bean>


增加工厂:

package com.linying.factory;

import com.linying.dao.UserDao;
/**
 * Dao
静态工厂
 * 
@author Ying-er
 * @time 2010-6-20 
下午04:23:25
 * @mail melody.crazycoding@gmail.com
 * 
@version 1.00
 */

public class DaoFactory {
    
public static UserDao getUserDao(){
        
return new UserDao();
    }
}


控制台输出:
UserDao
构造
User
构造
UserAction
构造
setUser
方法被调用
setUserDao
方法被调用
执行insert方法
saveUser
方法被调用

3.
实例工厂注入
修改beans.xml

    <bean name="daoFactory" class="com.linying.factory.DaoFactory"></bean>
    
    
<bean name="userDao" factory-bean="daoFactory" factory-method="getUserDao"></bean>
    
    
<bean name="userDomain" class="com.linying.domain.User"></bean>
    
    
<bean name="userAction" class="com.linying.service.UserAction">
        
<property name="user" ref="userDomain"></property>
        
<property name="userDao" ref="userDao"></property>    
    
</bean>


增加实例工厂:

package com.linying.factory;

import com.linying.dao.UserDao;
/**
 * Dao
实例工厂
 * 
@author Ying-er
 * @time 2010-6-20 
下午04:23:25
 * @mail melody.crazycoding@gmail.com
 * 
@version 1.00
 */

public class DaoFactory {
    
public UserDao getUserDao(){
        
return new UserDao();
    }
}


控制台输出:
UserDao
构造
User
构造
UserAction
构造
setUser
方法被调用
setUserDao
方法被调用
执行insert方法
saveUser
方法被调用

4.
构造器注入
修改beans.xml:

    <bean name="userDao" class="com.linying.dao.UserDao"></bean>
    
    
<bean name="userDomain" class="com.linying.domain.User"></bean>
    
    
<bean name="userAction" class="com.linying.service.UserAction">
        
<constructor-arg ref="userDomain"></constructor-arg>
        
<constructor-arg ref="userDao"></constructor-arg>    
    
</bean>   

修改UserAction.java:

package com.linying.service;

import com.linying.dao.UserDao;
import com.linying.domain.User;

/**
 * UserAction
 * 
 * 
@author Ying-er
 * @time 2010-6-20 
上午10:28:16
 * @mail melody.crazycoding@gmail.com
 * 
@version 1.00
 */

public class UserAction {
    
private User user;

    
private UserDao userDao;

    
public UserAction() {
        System.out.println("UserAction
构造");
    }

    
public UserAction(User user,UserDao userDao){
        System.out.println("UserAction
构造(有参构造)");
        
this.user = user;
        
this.userDao = userDao;
    }

    
/**
     * 
保存User对象
     * 
     */

    
public void saveUser() {
        userDao.insert(user);
        System.out.println("saveUser
方法被调用");
    }

//    public void setUser(User user) {
//        this.user = user;
//        System.out.println("setUser
方法被调用");
//    }
//
//    public void setUserDao(UserDao userDao) {
//        this.userDao = userDao;
//        System.out.println("setUserDao
方法被调用");
//    }

}


控制台输出:
UserDao
构造
User
构造
UserAction
构造(有参构造)
执行insert方法
saveUser
方法被调用

5.
集合注入
beans.xml:

    <bean name="daoFactory" class="com.linying.factory.DaoFactory"></bean>

    
<bean name="userDao" factory-bean="daoFactory"
        factory-method
="getUserDao">
    
</bean>

    
<bean name="userDomain" class="com.linying.domain.User">
        
<property name="id">
            
<value>1</value>
        
</property>
        
<property name="name" value="admin"></property>
        
<property name="password" value="123"></property>
        
<!--property name="birthday" value="1987-06-20"></property>-->
        
<property name="listDemo">
            
<list>
                
<value>list-1</value>
                
<value>list-2</value>
            
</list>
        
</property>
        
<property name="setDemo">
            
<set>
                
<value>set-1</value>
                
<value>set-2</value>
            
</set>
        
</property>
        
<property name="mapDemo">
            
<map>
                
<entry key="k1" value="v1"></entry>
                
<entry key="k2" value="v2"></entry>
            
</map>
        
</property>
    
</bean>

    
<bean name="userAction" class="com.linying.service.UserAction">
        
<property name="user" ref="userDomain"></property>
        
<property name="userDao" ref="userDao"></property>
    
</bean>


User.java:

package com.linying.domain;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 
领域对象
 * 
 * 
@author Ying-er
 * @time 2010-6-20 
上午10:01:05
 * @mail melody.crazycoding@gmail.com
 * 
@version 1.00
 */

public class User {
    
private int id;

    
private String name;

    
private String password;

    
private Date birthday;

    
private List<String> listDemo;

    
private Set<String> setDemo;

    
private Map<String, String> mapDemo;

    
public User() {
        System.out.println("User
构造");
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

    
public String getPassword() {
        
return password;
    }

    
public void setPassword(String password) {
        
this.password = password;
    }

    
public int getId() {
        
return id;
    }

    
public void setId(int id) {
        
this.id = id;
    }

    
public Date getBirthday() {
        
return birthday;
    }

    
public void setBirthday(Date birthday) {
        
this.birthday = birthday;
    }

    
public List<String> getListDemo() {
        
return listDemo;
    }

    
public void setListDemo(List<String> listDemo) {
        
this.listDemo = listDemo;
    }

    
public Map<String, String> getMapDemo() {
        
return mapDemo;
    }

    
public void setMapDemo(Map<String, String> mapDemo) {
        
this.mapDemo = mapDemo;
    }

    
public Set<String> getSetDemo() {
        
return setDemo;
    }

    
public void setSetDemo(Set<String> setDemo) {
        
this.setDemo = setDemo;
    }

}


Main.java:

package com.linying;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.linying.service.UserAction;

/**
 * 
测试程序入口
 * 
 * 
@author Ying-er
 * @time 2010-6-20 
上午11:20:24
 * @mail melody.crazycoding@gmail.com
 * 
@version 1.00
 */

public class Main {

    
/**
     * 
@param args
     */

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        BeanFactory bf = (BeanFactory) (new ClassPathXmlApplicationContext(
                "beans.xml"));

        UserAction userAction = (UserAction) bf.getBean("userAction");
        System.out.println(userAction.getUser().getId());
        System.out.println(userAction.getUser().getName());
        System.out.println(userAction.getUser().getPassword());
//        System.out.println(userAction.getUser().getBirthday());
        System.out.println(userAction.getUser().getListDemo());
        System.out.println(userAction.getUser().getSetDemo());
        System.out.println(userAction.getUser().getMapDemo());
    }
}


控制台输出:
UserDao
构造
User
构造
UserAction
构造
setUser
方法被调用
setUserDao
方法被调用
1
admin
123
[list-1, list-2]
[set-1, set-2]
{k1=v1, k2=v2}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值