zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    go开发 modules 的使用和代理
    利用 nodejs 解析 m3u8 格式文件,并下 ts 合并为 mp4
    别再@官方啦,普天同庆加国旗
    vue基于 element ui 的按钮点击节流
    react-router 5.0 的鉴权
    slot 组件的内部传值 v-slot 的使用
    javascript 写一个ajax 自动拦截,并下载数据
    Linux 命令大全
    http 基础
    MongoDB Shell (mongo)
  • 原文地址:https://www.cnblogs.com/new0801/p/6175969.html
Copyright © 2011-2022 走看看