最近对系统进行改造,发现在泛型实例初始化的时候,得不到想要的泛型。或者需要强制转换。
spring 4 开始支持泛型对象初始化,初始化方法如下:
注:使用配置文件的方法暂时还没有发现,下面是使用java annotation的方法:
package com.mitchz..toolkit.chain; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.asiainfo.iposs.toolkit.chain.spring.TestMessageContext; import com.google.common.collect.Lists; import com.google.common.collect.Maps; /** * @author zhangya * @version 1.0 * @since 2014年5月25日 * @category com.mitchz.toolkit.chain */ @Configuration public class TestConfiguration { @Autowired @Qualifier("getCustomerInfo") HandlerCommand<String, Object, TestMessageContext> getCustomerInfo; @Autowired @Qualifier("testDriveVehicle") HandlerCommand<String, Object, TestMessageContext> testDriveVehicle; @Autowired @Qualifier("negotiateSale") HandlerCommand<String, Object, TestMessageContext> negotiateSale; @Autowired @Qualifier("arrangeFinancing") HandlerCommand<String, Object, TestMessageContext> arrangeFinancing; @Autowired @Qualifier("closeSale") HandlerCommand<String, Object, TestMessageContext> closeSale; @Autowired @Qualifier("chain1") HandlerChain<String, Object, TestMessageContext> chain1; @Autowired @Qualifier("chain2") HandlerChain<String, Object, TestMessageContext> chain2; @Bean(name = "chain1") public HandlerChain<String, Object, TestMessageContext> createChain1() { List<HandlerCommand<String, Object, TestMessageContext>> commands = Lists .newArrayList(); commands.add(getCustomerInfo); commands.add(testDriveVehicle); commands.add(negotiateSale); commands.add(arrangeFinancing); commands.add(closeSale); return new HandlerChain<String, Object, TestMessageContext>(commands); } @Bean(name = "chain2") public HandlerChain<String, Object, TestMessageContext> createChain2() { List<HandlerCommand<String, Object, TestMessageContext>> commands = Lists .newArrayList(); commands.add(getCustomerInfo); commands.add(arrangeFinancing); commands.add(closeSale); return new HandlerChain<String, Object, TestMessageContext>(commands); } @Bean(name = "catalog") public HandlerCatalog<String, Object, TestMessageContext> createCatalog() { Map<String, HandlerChain<String, Object, TestMessageContext>> commands = Maps .newHashMap(); commands.put("chain1", chain1); commands.put("chain2", chain2); return new HandlerCatalog<String, Object, TestMessageContext>(commands); } }
完整的例子参考:
http://spring.io/blog/2013/12/03/spring-framework-4-0-and-java-generics
相关推荐
在Java配置类中,我们可以使用`@Configuration`和`@Bean`注解来创建和管理Bean,同时使用`@TypeChecked`注解确保类型安全的泛型注入。 7. **Spring的类型转换系统**:Spring还提供了一套完整的类型转换系统,可以...
在Spring 4版本中,泛型依赖注入是一项重要的特性,它极大地提高了代码的灵活性和可维护性。本笔记将深入探讨SSH中的Spring框架如何实现泛型依赖注入。 首先,我们来理解泛型的基本概念。泛型是Java SE 5引入的一种...
Spring框架则是一个全面的企业级应用开发框架,提供了依赖注入、事务管理、AOP(面向切面编程)等功能,常与Hibernate结合使用以构建松耦合、模块化的应用程序。 泛型是Java 5引入的一个特性,允许在类、接口和集合...
通过这个实战项目,你可以深入理解Java反射、泛型和注解的用法,并且了解到如何利用它们构建一个基本的依赖注入系统,这将有助于你更好地理解和使用Spring框架。同时,这样的实践也有助于提升你的编程技能,使你能够...
总结来说,"Struts2+hibernate+spring整合泛型DAO"是一种常见的Java Web开发模式,它利用三大框架的优势,结合泛型设计,提高了代码复用,降低了维护成本,使得开发者能更专注于业务逻辑,而不是基础架构。
@Component 是一个泛型注解,可以用来标注任何类,使其成为 Spring 的一个组件。@Component 可以使用在类上,以便 Spring 框架可以自动检测和实例化该类。 4. @Configuration @Configuration 是一个注解,用来标注...
在Spring 4.0中,一个重要的改进是引入了对泛型依赖注入的支持,这使得开发者可以更加精确地控制依赖关系,从而提高了代码的可读性和类型安全性。在描述的示例中,我们看到`BaseDao`是一个泛型抽象类,它有一个泛...
2. **Spring3**:Spring是Java企业级应用的全面解决方案,包括依赖注入(DI)、面向切面编程(AOP)以及声明式事务管理等。Spring3引入了大量注解,如`@Autowired`实现自动装配,`@Service`、`@Repository`和`@...
Spring4加强了对依赖注入(Dependency Injection,DI)的支持,使得配置更加灵活,同时也支持了基于注解的配置,减少了XML配置的使用。例如,@Component、@Service、@Repository和@Controller注解使得bean的声明更加...
在Spring框架中,初始化泛型类是一个常见的需求,特别是在创建依赖注入的Bean时。本文将深入探讨Spring如何处理泛型类的初始化,并提供实例来帮助理解。 首先,我们需要理解Java中的泛型。泛型允许我们在类、接口和...
Spring的依赖注入机制还能帮助我们在需要的地方注入DAO实例,简化了服务层的代码。 至于`Dao经典泛型.doc`文件,可能是更深入的关于Hibernate泛型DAO的文档,可能包含了如何配置Spring、如何处理复杂查询以及如何...
Spring4.x引入了类型安全的依赖注入,允许在编译时检查依赖关系,减少了运行时错误的可能性。这得益于Java 8的泛型和方法引用的支持,使得配置更加简洁且易于理解。 2. **Java 8支持** Spring4.x全面支持Java 8,...
spring的生命周期及BeanPostProcessor的使用,注解方式创建bean 及使用Autowried标签关联类的属性 ,泛型依赖注入的使用 spring-3 演示使用动态代理模式实现面向切面编程 使用注解方式进行AOP编程及使用配置xml方式...
Spring的依赖注入可以通过反射来创建和配置对象,而泛型则用于确保容器中存储的对象类型正确。此外,很多工具类库,如Apache Commons Lang和Google Guava,也利用泛型和反射提高了代码的灵活性和可维护性。 总的来...
Spring提供依赖注入和AOP(面向切面编程),Struts处理MVC(模型-视图-控制器)架构中的视图和控制,Hibernate则负责对象-关系映射(ORM),简化了数据库操作。SSH2的组合使得开发者能够高效、安全地构建复杂的应用...
1.创建第一个 Spring 程序案例 2.Spring IoC案例 3.Spring Bean案例 4.Spring 表达式语言案例 5.Spring xml 配置案例 ...7.Spring 泛型依赖注入案例 8.Spring AOP案例 9.Spring JDBCTemplate案例 10.Spring 事务案例
`来代替SQL语句中的具体值,通过`PreparedStatement`防止SQL注入。 2. **结果映射**:查询结果通常需要映射到Java对象。可以使用`RowMapper`或`ResultSetExtractor`来完成这个任务。 3. **事务管理**:`JdbcTemplate...
8. **泛型依赖注入**:Spring支持泛型类型的依赖注入,使得在不牺牲类型安全性的前提下,可以更加灵活地管理bean之间的依赖关系。这在处理复杂的数据结构时特别有用。 通过深入理解并熟练运用这些概念,开发者可以...
总的来说,Spring4.0的更新强化了其作为Java开发基石的地位,通过泛型注入、SpEL、验证框架和REST支持,提供了更加高效、灵活和强大的开发工具。这些知识点对于任何想要深入理解和使用Spring框架的开发者来说都是至...