Spring 通过maven pom文件配置初始化
spring对bean的生命周期管理的比较精细,并不是单纯的new()实例化.
1,找到class配置信息并将其实例化
2,受用依赖注入,按照配置信息,配置bean的所有属性;
在一个开始使用前可以用配置初始化一些参数.
方法一:用注解@PostConstruct,也就是相当于init-method
package com.weitoo.server.task; import javax.annotation.PostConstruct;
import javax.annotation.Resource; import org.springframework.stereotype.Component; import com.qianmi.open.api.DefaultOpenClient;
import com.qianmi.open.api.OpenClient;
import com.weitoo.server.mapper.PropertyMapper; /**
* 授权和充值消息推送父类
*
* @author 钟政 暂时将这些字段值写死
*/
@Component
public class BaseTask {
@Resource
private PropertyMapper propertyMapper; private static String API_URL = ""; protected static String APP_KEY = ""; protected static String APP_SECRET = ""; protected static String accessToken = "";
protected static String refreshToken = "";
// 创建一个客户端,默认连接超时时间为3秒,请求超时时间为15秒。
protected static OpenClient client = new DefaultOpenClient(API_URL, APP_KEY, APP_SECRET); //方法二:是利用spring实例化和注入依赖后会执行的注解.
@PostConstruct
private void initMethod(){
if("".equals(accessToken)){
accessToken = propertyMapper.getValue("access_token").getData();
}
if("".equals(refreshToken)){
refreshToken = propertyMapper.getValue("refresh_token").getData();
}
if("".equals(APP_KEY)){
APP_KEY=propertyMapper.getValue("app_key").getData();
}
if("".equals(APP_SECRET)){
APP_SECRET=propertyMapper.getValue("app_secret").getData();
}
API_URL=propertyMapper.getValue("api_url").getData();
//
client = new DefaultOpenClient(API_URL, APP_KEY, APP_SECRET);
} }
上面的方式是通过数据库配置一些初始化参数.
方法二:通过spring-config 直接配置.所配置的属性必须有set方法
如果是想从maven中的pom.xml文件中获取,需要中间文件*.properties文件.
如获取pom属性如下
<properties>
<wxpay-scanpay-scancode-url>https://api.mch.weixin.qq.com/pay/unifiedorder</wxpay-scanpay-scancode-url>
<wxpay-scanpay-pay-api-url>https://api.mch.weixin.qq.com/pay/micropay</wxpay-scanpay-pay-api-url>
<wxpay-scanpay-pay-query-url>https://api.mch.weixin.qq.com/pay/orderquery</wxpay-scanpay-pay-query-url>
<wxpay-scanpay-refund-url>https://api.mch.weixin.qq.com/secapi/pay/refund</wxpay-scanpay-refund-url>
<wxpay-scanpay-refund-query-url>https://api.mch.weixin.qq.com/pay/refundquery</wxpay-scanpay-refund-query-url>
<wxpay-scanpay-reverse-api-url>https://api.mch.weixin.qq.com/secapi/pay/reverse</wxpay-scanpay-reverse-api-url>
<wxpay-scanpay-download-bill-url>https://api.mch.weixin.qq.com/pay/downloadbill</wxpay-scanpay-download-bill-url>
<wxpay-scanpay-report-api-url>https://api.mch.weixin.qq.com/payitil/report</wxpay-scanpay-report-api-url>
</properties>
*.properties的文件如下:wxpay.properties
scanpay.scancode.url=${wxpay-scanpay-scancode-url}
scanpay.pay.api.url=${wxpay-scanpay-pay-api-url}
scanpay.pay.query.url =${wxpay-scanpay-pay-query-url}
scanpay.refund.url=${wxpay-scanpay-refund-url}
scanpay.refund.query.url=${wxpay-scanpay-refund-query-url}
scanpay.reverse.api.url=${wxpay-scanpay-reverse-api-url}
scanpay.download.bill.url=${wxpay-scanpay-download-bill-url}
scanpay.report.api.url=${wxpay-scanpay-report-api-url}
在spring-config.xml关键配置如下:
<bean id="propertyConfigurer" class="com.weitoo.server.security.SecurityPropertyConfigurer">
<property name="locations">
<list> <!-- 微信支付初始化参数 -->
<value>classpath:property/wxpay.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
其中com.weitoo.server.security.SecurityPropertyConfigurer类是继承了org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.直接用PropertyPlaceholderConfigurer类也行.主要是解析properties文件
spring-config.xml 初始化类参数如下,ps:scope="singleton" 代表该类生命周期属于spring管理.
<bean id="configure" class = "com.tencent.common.Configure" scope="singleton">
<property name="REFUND_API" value="${scanpay.refund.url}"/>
<property name="REFUND_QUERY_API" value="${scanpay.refund.query.url}"/>
<property name="REVERSE_API" value="${scanpay.reverse.api.url}"/>
<property name="DOWNLOAD_BILL_API" value="${scanpay.download.bill.url}"/>
<property name="REPORT_API" value="${scanpay.report.api.url}"/>
</bean>
Spring 通过maven pom文件配置初始化的更多相关文章
- maven pom文件简单模板和配置详解
https://blog.csdn.net/earbao/article/details/49924943 maven pom文件简单模板和配置详解
- 【maven】maven pom文件详解
maven pom文件详解 最近配置maven中的pom文件,maven中有些属性不太清楚,在这里记录一下 <project xmlns="http://maven.apache.or ...
- 在springboot pom文件配置过程,`spring-boot-maven-plugin`配置出错的问题解决及配置过程出现问题的一些思考
在springboot pom文件配置过程,spring-boot-maven-plugin配置出错的问题解决及配置过程出现问题的一些思考 解决方法一: 也是最简单的方法,可能是maven没有来得及导 ...
- scala maven pom文件
老司机的spark maven pom文件 pom文件一: 4.0.0 <groupId>com.glsx</groupId> <artifactId>spark- ...
- Hadoop Maven pom文件示例
Hadoop Maven pom文件示例 @(Hadoop) <?xml version="1.0" encoding="UTF-8"?> < ...
- Maven pom文件常用配置,转载
什么是POM Project Object Model,项目对象模型.通过xml格式保存的pom.xml文件.作用类似ant的build.xml文件,功能更强大.该文件用于管理:源代码.配置文件.开发 ...
- maven pom文件
setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件:而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和li ...
- maven pom文件详解
http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html http://blog.csdn.net/houpengfei111/a ...
- Maven pom文件中dependency scope用法
在Maven中依赖的域有:compile.provided.runtime.system.test.import 一.compile(默认) 当依赖的scope为compile的时候,那么当前这个依赖 ...
随机推荐
- redis连接数
1.应用程序会发起多少个请求连接?1)对于php程序,以短连接为主.redis的连接数等于:所有web server接口并发请求数/redis分片的个数.2)对于java应用程序,一般使用JedisP ...
- [NOIP摸你赛]Hzwer的陨石(带权并查集)
题目描述: 经过不懈的努力,Hzwer召唤了很多陨石.已知Hzwer的地图上共有n个区域,且一开始的时候第i个陨石掉在了第i个区域.有电力喷射背包的ndsf很自豪,他认为搬陨石很容易,所以他将一些区域 ...
- WPS Office Pro 2016 专业版
感觉WPS还是不错的,Office安装包太大了.嘻嘻 政府专用正版序列号激活码,可永久有效激活! THUV2-32HH7-6NMHN-PTX7Y-QQCTH WPS Office Pro 2016 专 ...
- Docker总结(图片打开略慢请知晓)
- 一个Activity掌握Design新控件 (转)
原文地址:http://blog.csdn.net/lavor_zl/article/details/51295364 谷歌在推出Android5.0的同时推出了全新的设计Material Desig ...
- SpringTest框架JUnit单元测试用例获取ApplicationContext实例的方法
步骤 1.继承AbstractJUnit4SpringContextTests 2.引入ApplicationContext 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- Tomcat-在发布项目时两次重复加载的问题介绍与解决
前提: 如 1.存在某个应用:hello 2.该应用存放路径:D:\apache-tomcat-5.5.17\webapps\hello 3.Tomcat的server.xml部分配置信息如下: ...
- mysql-窗口多表连接视图view
create VIEW view_comment as (' as type FROM wei_comment_comment w) UNION ALL (' as type from review_ ...
- Python之几种重要的基本类型:元组,列表,字典,字符串,集合
写在前面:重点讲解元组,列表,字典相关概念和常用操作. 一.元组(tuple) 1.特性:不可更改的数据序列.[理解:一旦创建元组,则这个元组就不能被修改,即不能对元组进行更新.增加.删除操作] 2. ...
- 【USACO 1.5】Prime Palindromes
/* TASK: pprime LANG: C++ SOLVE: 枚举数的长度,dfs出对称的数,判断是否在范围内,是否是素数 原来想着枚举每个范围里的数,但是显然超时,范围最大是10^9. 对称的数 ...