Spring 读取配置文件(二)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DaVinci的Buffer_Handle和BufTab Cmem函数调用

DaVinci的dvsdk里面,所有的内存用的都是CMEM,而比较上层的一个封装就是BufTab和Buffer_Handle了 每个Tab可以控制好多块内存块。 具体到内存块有两种,一种是创建的时候指定他的大小啊,物理地址啥的。另外一种就是仅仅创建出这个 …

Qt使用两组RadioButton,两组之间相互独立

Qt中使用两组共四个RadioButton时,由于RadioButton的特性,所以两组一共四个按钮每次只能选择一个,要使得两组RadioButton相互独立,需要用到QButtonGroup这个功能,把RadioButton加到QButtonGroup里面,实现两…

sleep 和 wait 的区别

为什么80%的码农都做不了架构师?>>> 面试中常问的就是 sleep 和 wait 有什么不同吗?为了面试时候发挥的更好,我在这里总结分享下。 首先对于 sleep() 方法,我们首先要知道该方法是属于 Thread 类中的。而 wait() 方法…

2016年11月13日周工作知识点总结

jQuery :eq() 选择器选取带有指定 index 值的元素。index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1)。经常与其他元素/选择器一起使用,来选择指定的组中特定序号的元素(如下面的例子)。$("p…

DM6467之视频采集(Linux)下MMAP

做dsp6467是在linux下做视频采集,仅ARM端 一共有三种视频采集方式: 1)使用read、write方式:直接使用 read 和 write 函数进行读写。这种方式最简…

QPS、TPS计算

QPS (Query per second) (每秒查询量) TPS(Transaction per second) (每秒事务量,如果是InnoDB会显示,没有InnoDB就不会显示) 计算方法 QPS Questions SHOW GLOBAL STATUS LIKE Questions; Uptime SHOW G…

QT 中textEdit 和 textBrowser 无法使用斜体及加粗等 解决办法

编辑框的几个种类 QT 中一共四个文本编辑框 分别是 Line Edit 、Text Edit、 Plait Text Edit和textBrowser四种文本编辑框架! 一、输入内容不同 1、LineEdit:LineEdit的输入内容为单行文本输入。 2、TextEdit:TextEdit的输入内容为多行文…

【select模块】select IO多路复用和select实现FTP

select是全平台通用的IO多路复用模块。最大连接数:1024。poll和epoll没有最大连接数限制,但只能用在linux平台。selectors是再封装模块,推荐使用。下篇会讨论。select.select(rlist, wlist, xlist[, timeout])This is a straightforward inte…

变量属性

变量属性 C语言的变量属性 C语言中的变量可以有自己的属性在定义变量的时候加上“属性”关键字属性关键字指明变量的特有意义auto关键字 auto即C语言中局部变量的默认属性auto表明将被修饰的变量存储在栈上编译器默认所有的局部变量都是auto的register关键字 register关键字指明…

WPF:How to display a Bitmap on Image control

一个Bitmap文件,叫做screenShotFile, 你可以这样显示到Image控件上。 BitmapImage bi new BitmapImage(); bi.BeginInit(); bi.UriSource new Uri(this.screenShotFile, UriKind.Absolute); bi.EndInit(); this.scre…

QT中$$PWD的意思

$$PWD的意思为当前目录 如pro文件中:INCLUDEPATH $$PWD/lib/x64-win64 $$PWD表示的意思就是pro文件所在的目录。

Dubbo 整合 Pinpoint 做分布式服务请求跟踪

2019独角兽企业重金招聘Python工程师标准>>> 在使用Dubbo进行服务化或者整合应用后,假设某个服务后台日志显示有异常,这个服务又被多个应用调用的情况下,我们通常很难判断是哪个应用调用的,问题的起因是什么&#xff0…

Linux 进程详解

Linux内核的七大区间 1.进程管理(进程创建,进程的三种状态,进程间的调度,调度算法...) 2.内存管理(段式管理(Linux所有段都从0开始),页式管理--地址偏移量) 3…

C#2.0 委托

委托 委托是一个非常不错的设计,允许我们把方法做为参数传递,实现了开放閉放原则。在方法中我们只要有一个委托占位,调用者就可以传入符合签名的方法来做不同的操作,这也面向对象开发中多态的魅力。 但是在C#1.0的时候&#xff…

qt乱码Could not decode“xxx.cpp“ with “UTF-8“-encoding.Editing not possible问题处理

问题描述:如题: 解决方法: 1、点击Select Encoding按钮 2、选择按照系统编码 3、选中System后点击按编码重新载入 4、问题解决

bootargs中的环境变量说明和一些常用的uboot命令

bootargs中的环境变量说明和一些常用的uboot命令 一些常见的uboot命令: Help [command]在屏幕上打印命令的说明 Boom [addr]启动在内存储器的内核 Tftpboot通过tftp启动内核 Saveenv保存环境变量 setenv name [value] 设置环境变量 bootargs中的环境变量 co…

特斯拉自动驾驶系统秘密,来自特斯拉AI总监爆料

据外媒报道,特斯拉汽车公司人工智能(AI)总监安德烈卡帕西(Andrej Karpathy)日前参加2018年TRAIN AI大会时,剖析了该公司构建自动驾驶仪(Autopilot)计算机视觉解决方案的方法。据介绍,Autopilot编…

快捷键汇总

navicat 运行选中代码 ctrshiftr navicat 运行所有代码 ctrr 快速显示桌面 wind 转载于:https://www.cnblogs.com/caer/p/6064571.html

js做倒计时

var dinshiqi setInterval(timerun,1000) function timerun(){ //timegundong var now_time new Date(); var hours now_time.getHours(); //时 var minutes now_time.getMinutes(); //分 var seconds now_time.getSeconds(); //秒 //秒钟 show_seconds 59 - parseInt(s…

QT右键点击添加库不响应的解决办法

问题描述 QT在pro右键点击添加库不响应 解决方案 双击打开pro文件 在pro文件界面里单击鼠标右键,并选择添加库。 解决问题