spring4的新特性---泛型注入


廢話不多說,直接上代碼

一.寫一個實體類

package generic;

import java.io.Serializable;

public class User implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	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;
	}

}

二.公共DAO:BaseDao(crud都寫在這里)

package generic;

public abstract class BaseDao<T> {
	
	public void save(T t){
		System.out.println(".....");
	}
	
	public void delete(){
		System.out.println("....");
	}

}

三.DAO的具體實現:UserDa繼承BaseDao

package generic;

import org.springframework.stereotype.Repository;

@Repository("userDao")
public class UserDao extends BaseDao<User>{
	
}

四.公共Service:BaseService(這里寫一些公共方法和一個抽象方法,抽象方法為了獲取BaseService的具體實現)

package generic;

public abstract class BaseService<T> {

	public abstract BaseDao<T> getBaseDao();

	public void save(T t){
		getBaseDao().save(t);
	}
	
}

五.寫BaseService的具體實現:UserService並繼承BaseService

package generic;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("userService")
public class UserService extends BaseService<User>{
	
	@Autowired
	private UserDao userDao;

	@Override
	public BaseDao<User> getBaseDao() {	
		return userDao;
	}

}

 其中第四步和第五步是以前的寫法,Spring4的新瀉法如下:

 新四:

package generic;

import org.springframework.beans.factory.annotation.Autowired;

public abstract class BaseService<T> {
	@Autowired
	private BaseDao<T> baseDao;

	public void save(T t){
		baseDao.save(t);
	}
}

新五:

package generic;

import org.springframework.stereotype.Service;

@Service("userService")
public class UserService extends BaseService<User>{
	
}

大家可以看到現在的代碼非常簡潔,在步驟新四中,注入的時候spring會去自動去找BaseDao<User>的子類實現並注入

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM