注册 @Configuration 标识的类,spring 读取配置文件的时候该类会被自动装载
package cn.com.receive; import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class ApplicationInitialize { @Value("${tms.terminal.search:200}") private int search; @Value("${tms.terminal.monitor:15}") private int monitor; @Value("${tms.terminal.signkey:POI:}") private String signkey; @Value("${tms.terminal.queueName:gps}") private String queueName; @Value("${tms.terminal.exchangeName:tms}") private String exchangeName; @Value("${tms.terminal.routingKey:tms}") private String routingKey; @Bean public ConsumerService consumerService() { try { ConsumerService consumerService = new ConsumerService(search,monitor,signkey,queueName,exchangeName,routingKey); return consumerService; } catch (Exception e) { // TODO: handle exception throw e; } }}
具体业务实现类
package cn.com.test.receive;import java.util.HashMap;import java.util.Map;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import cn.evun.tms.entity.QueueMessages;/*** * 消费者 * @author * */public class ConsumerService { private static final Logger logger = LoggerFactory.getLogger(ConsumerService.class); protected int SEARCH_COUNT; protected String SIGN_KEY; protected long MONITOR_SECONDS; protected String QUEUE_NAME; protected String EXCHANGE_NAME; protected String ROUTING_KEY; /*** * 初始化消费者 * @param search * @param monitor * @param signkey * @param queue_name */ public ConsumerService(int search,int monitor,String signkey,String queue_name,String exchangeName,String routingKey) { SEARCH_COUNT = search; MONITOR_SECONDS = monitor; SIGN_KEY = signkey; QUEUE_NAME = queue_name; EXCHANGE_NAME = exchangeName; ROUTING_KEY = routingKey; } /** * 启动服务消费者 * @throws Exception */ public void Start() throws Exception { // TODO Auto-generated method stub try { } catch (Exception e) { // TODO Auto-generated catch block logger.error("----------------------------- Start: "+ e.getMessage() +" -----------------------"); throw e; } }}
/***
* Spring 自动注入扫描加载 @Configuration 注解标识的类 * 及实动态实例化一个 bean 加载配置文件 * 并载入 @Bean 等相关注解标注的 javaBean * @param resource * @param basePackages * @return */public abstract class test { protected static ConsumerService consumerService;/*** * 初始化队列实例 */ private void init() { try { @SuppressWarnings("resource") MyApplicationContext myCtx = new MyApplicationContext("cn.com.receive"); consumerService = (ConsumerService) myCtx.getBean(ConsumerService.class); consumerService.Start(); } catch (Exception e) { // TODO: handle exception throw e; } } /*** * 加载 .properties 配置文件 * Spring 编码方式获取 PropertyPlaceholderConfigurer 的属性 * @author * */ private static class MyApplicationContext extends AnnotationConfigApplicationContext { public MyApplicationContext(String basePackages) { super(); GenericBeanDefinition beanDefination = new GenericBeanDefinition(); beanDefination.setBeanClass(PropertyPlaceholderConfigurer.class); Mapmap = new HashMap (); map.put("locations", "/receive.properties");//根据 ApplicationContext 进行判断 //map.put("locations", "file:D://receive.properties");//作为 URL 从文件系统中加载。 beanDefination.setPropertyValues(new MutablePropertyValues(map)); this.registerBeanDefinition("propertyPlaceholderConfigurer", beanDefination); super.scan(basePackages); super.refresh(); } }
receive.properties 配置文件
# tms redis counttms.terminal.search=200# tms monitortms.terminal.monitor=15# redis signkeytms.terminal.signkey=POI:# rabbit mq queueNametms.terminal.queueName=gps# rabbit mq exchangeNametms.terminal.exchangeName=tms# rabbit mq routingKeytms.terminal.routingKey=tms