Spring 读取配置文件并调用 bean

package cn.com.test.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;@Beanpublic ConsumerService consumerService() {try {ConsumerService consumerService = new ConsumerService(search,monitor,signkey,queueName,exchangeName,routingKey);return consumerService;} catch (Exception e) {// TODO: handle exceptionthrow e;}}@Beanpublic ProducerAgent producerService() {try {ProducerAgent producerAgent = new ProducerAgent();return producerAgent;} catch (Exception e) {// TODO: handle exceptionthrow 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 stubtry {} catch (Exception e) {// TODO Auto-generated catch blocklogger.error("-----------------------------    Start: "+ e.getMessage() +"    -----------------------");throw e;}}
}package cn.com.test.receive;import java.io.IOException;
import java.io.InputStream;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** Spring 注入初始化配置文件资源* @author **/
public class ConfigurationBase {private static final Logger logger = LoggerFactory.getLogger(ConfigurationBase.class);/**** Spring 自动注入扫描加载  @Configuration 注解标识的类*               及调用 ConfigurationBase.class.getResourceAsStream 加载配置文件* 并载入 @Bean 等相关注解标注的 javaBean* @param resource* @param basePackages* @return*/public SuperAnnotationConfigApplicationContext loadSpringContext(String resource,String... basePackages) {try {this.loadConfigurationFromResource(resource);//this.setSystemProperties();return new SuperAnnotationConfigApplicationContext(basePackages);} catch (Exception e) {// TODO: handle exceptionthrow e;}}/*** 加载应用程序配置文件* @param resource*/private void loadConfigurationFromResource(String resource) {InputStream is = ConfigurationBase.class.getResourceAsStream(resource);try {if (is != null) {System.getProperties().load(is);}} catch (IOException e) {logger.error(e.getMessage(), e);} finally {if (is != null) {try {is.close();} catch (IOException e) {logger.error(e.getMessage(), e);}}}}@SuppressWarnings("unused")private void setSystemProperties() {System.setProperty("redis.keys.group", "cn.com.redis.test.case");}/*** 通过应用上下文,初始化类参数* @author**/public class SuperAnnotationConfigApplicationContext extends AnnotationConfigApplicationContext {public SuperAnnotationConfigApplicationContext(String... basePackages) {super();GenericBeanDefinition gbd = new GenericBeanDefinition();gbd.setBeanClass(PropertyPlaceholderConfigurer.class);this.registerBeanDefinition("propertyPlaceholderConfigurer", gbd);this.scan(basePackages);this.refresh();}}
}
/**** 实例化调用*/
private static void runClient() throws Exception{try {ConfigurationBase configurationBase = new ConfigurationBase();SuperAnnotationConfigApplicationContext applicationContext = configurationBase.loadSpringContext("/terminal-receive.properties", "cn.com.test.receive");ConsumerService consumerService = (ConsumerService) (applicationContext.getBean("consumerService"));consumerService.Start();} catch (Exception e) {// TODO: handle exceptionthrow e;}
}

terminal-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/6054158.html

Spring 读取配置文件(二)相关推荐

  1. Spring读取配置文件,获取bean的几种方式

    Spring读取配置文件,获取bean的几种方式 方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemX ...

  2. spring 读取配置文件的优先级

    为什么80%的码农都做不了架构师?>>>    spring 读取配置文件的优先级 1 结论 在spring加载properties配置文件的过程中,会根据key出现覆盖现象,后加载 ...

  3. Spring读取配置文件的几种方法(从0开始)

    新建一个Maven空项目 新建配置文件 在src -> main下新建一个资源目录resources,然后在该资源目录下新建一个application.properties文件. #自定义内容 ...

  4. 关于spring读取配置文件的两种方式

    很多时候我们把需要随时调整的参数需要放在配置文件中单独进行读取,这就是软编码,相对于硬编码,软编码可以避免频繁修改类文件,频繁编译,必要时只需要用文本编辑器打开配置文件更改参数就行.但没有使用框架之前 ...

  5. spring读取配置文件初始化容器操作总结

    Spring初始化容器.三种经常用到的实现: 一.ClassPathXmlApplicationContext:从类路径中加载. 二.FileSystemXmlApplicationContext:从 ...

  6. spring读取配置文件的几种方式

    场景 假如有以下属性文件dev.properties, 需要注入下面的tag tag=123 通过PropertyPlaceholderConfigurer <bean class=" ...

  7. java读取配置文件的几种方法

    在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法. 一.读取xml配置 ...

  8. java加载xml配置文件_java读取配置文件的几种方法

    原标题:java读取配置文件的几种方法 在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring ...

  9. Spring框架配置文件 application.xml 示例

    注解版 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http: ...

最新文章

  1. python爬虫 小白轻松从0到1_如何从0到1,学习Python的流程【小白入门】
  2. java内存分析_java内存分析总结
  3. Dx11DemoBase 基类(二) 初始化 DirectX11 的 4个基本步骤
  4. .NET Core 2将Visual Basic带到了Linux和macOS平台
  5. 实例24:python
  6. windowsXP/7下消除快捷键箭头的方法
  7. python怎么做回归分析_如何在Python中进行二维回归分析?
  8. 图论算法(二)-最短路径的Dijkstra [ 单源 ] 和Floyd[ 多源 ] 解法(JAVA )
  9. 汇编重要知识点:地址编号和数据编号
  10. 《Effective Python 2nd》 读书笔记——函数
  11. 单点登录相关问题总结
  12. php缓存memclear,PHP内存缓存加速功能memcached安装与用法
  13. 2021美赛成绩查询证书下载
  14. 基于HTML5(微信公众号,小程序)的视频安防解决方案浅析
  15. 解决qt下VCI_OpenDevice一直返回0的问题
  16. 终于有人把 Docker 讲清楚了,万字长文详解!
  17. java happen-before_Java内存模型happen-before的实现原理
  18. athletes 表包含运动员姓名,年纪和代表国家。下面哪个查询可以找出代表每个国家最年轻的运动员情况?
  19. 百花齐放的国产数据库
  20. 女生戴蓝牙耳机什么颜色好看?适合女生的高颜值蓝牙耳机

热门文章

  1. php kafka storm,php的kafka踩坑(二)
  2. 深度学习(33)随机梯度下降十一: TensorBoard可视化
  3. oracle设置每列字符数,如何修改一个数字字段
  4. 【sklearn学习】模型网格化调参
  5. html中超链接使用_HTML实例源码
  6. 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
  7. 在C#中使用gRPC及protobuf简介
  8. 如何直接强制客户端刷新.js文件
  9. C++笔记——析构函数
  10. opencv 运动追踪_足球运动员追踪-使用OpenCV根据运动员的球衣颜色识别运动员的球队