Spring 读取配置文件(一)

注册 @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; @Configuration
public 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);
            Map<String, String> map = new HashMap<String, String>();
            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 count
tms.terminal.search=200
# tms monitor
tms.terminal.monitor=15
# redis signkey
tms.terminal.signkey=POI:
# rabbit mq queueName
tms.terminal.queueName=gps
# rabbit mq exchangeName
tms.terminal.exchangeName=tms
# rabbit mq routingKey
tms.terminal.routingKey=tms
原文地址:https://www.cnblogs.com/rinack/p/6054032.html