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>的子类实现并注入

时间: 2024-10-10 08:44:43

spring4的新特性---泛型注入的相关文章

Spring4.1新特性——Spring缓存框架增强(转)

目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异常处理 Spring4.1新特性——数据库集成测试脚本初始化 Spring4.1新特性——Spring MVC增强 Spring4.1新特性——页面自动化测试框架Spring MVC Test HtmlUnit简介 Spring4.1新特性——静态资源处理增强 Spring 4.1提供了对jcach

Spring4.2新特性(一)

已经发在了并发编程网: http://ifeve.com/spring4-2/ 1. 简介. 前些天spring4.2出来了, 从GA开始就一直在跟了, 前2天看完了所有Release Notes, 觉得记录下我比较感兴趣的特性. 官方的Release Notes: https://jira.spring.io/browse/SPR?selectedTab=com.atlassian.jira.jira-projects-plugin:changelog-panel&allVersions=tr

Spring4.1新特性——Spring MVC增强

1.GroovyWebApplicationContext  在Spring 4.1之前没有提供Web集成的ApplicationContext,在<Spring4新特性--Groovy Bean定义DSL>中我们自己去实现的com.sishuok.spring4.context.support.WebGenricGroovyApplicationContext,而4.1其已经提供了相应实现,直接把<Spring4新特性--Groovy Bean定义DSL>配置中的相应类改掉即可.

Spring -- 4.0新特性 -- 泛型依赖注入

泛型依赖注入为spring4.0版本新增加的特性. 目录结构 BaseService.java类 public class BaseService<T> { @Autowired private BaseRespository baseRespository; public void save() { System.out.println("Base Class save method"); System.out.println(baseRespository); } }

[Java5新特性]泛型

Java中集合的问题 Java中的集合有个缺点:就是当我们把数据放置到集合中时,集合是不会记住数据类型的.也就是说,当我们再从集合中获取到数据时,数据类型都变成了Object类型了. 换句话讲,集合对元素类型是没有任何限制的.这样可能会出现一些问题,例如如果我们要创建一个专门存储字符串的List集合的话,也可以将Integer类型数据放置进入.即使放置进去的都是字符串数据,从List集合取出时,还是需要类型转换的(因为集合中元素类型都是Object类型). 例如下面这个例子:创建一个只保存字符串

JDK5.0新特性-泛型

泛型(重点) 什么是泛型? 对数据类型进行一个限定. 应用最多的地方是集合. 为什么要使用泛型? 1.提高我们程序安全性. 2.将运行阶段的问题在编译阶段解决. 3.不用进行类型强制转换 ----------------------------------------------- 我们学习泛型的目的:会使用集合上定义的泛型. 1.集合上泛型的基本使用. //Collection<E> //List<E> //Set<E> //它们的作用是限定集合中元素的类型. 我们可

Spring4.x新特性

最近项目中准备集成Spring Data Redis, <dependencies>     <dependency>         <groupId>org.springframework.data</groupId>         <artifactId>spring-data-redis</artifactId>         <version>1.7.1.RELEASE</version>    

ios新特性(泛型)

协变 子类转父类   逆变父类给子类赋值

spring4.0.6最新稳定版新特性学习,注解自动扫描bean,自动注入bean(二)

Spring4.0的新特性我们在上一章已经介绍过了.包括它对jdk8的支持,Groovy Bean Definition DSL的支持,核心容器功能的改进,Web开发改进,测试框架改进等等.这张我们主要介绍spring4.0的自动扫描功能,以及对bean的过滤等特性进行学习. 好吧,废话少说,我们来看看代码吧. package com.herman.ss.test; import org.springframework.context.ApplicationContext; import org