• spring 4 泛型注入


    最近对系统进行改造,发现在泛型实例初始化的时候,得不到想要的泛型。或者需要强制转换。

    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基础知识整理
    HashMap源码解读(JDK1.7)
    书籍列表
    mysql4
    mysql3
    mysql2
    mysql1
    数据结构4
    数据结构3
    数据结构2
  • 原文地址:https://www.cnblogs.com/new0801/p/6175969.html
Copyright © 2020-2023  润新知