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文件配置初始化的更多相关文章

  1. maven pom文件简单模板和配置详解

    https://blog.csdn.net/earbao/article/details/49924943 maven pom文件简单模板和配置详解

  2. 【maven】maven pom文件详解

    maven pom文件详解 最近配置maven中的pom文件,maven中有些属性不太清楚,在这里记录一下 <project xmlns="http://maven.apache.or ...

  3. 在springboot pom文件配置过程,`spring-boot-maven-plugin`配置出错的问题解决及配置过程出现问题的一些思考

    在springboot pom文件配置过程,spring-boot-maven-plugin配置出错的问题解决及配置过程出现问题的一些思考 解决方法一: 也是最简单的方法,可能是maven没有来得及导 ...

  4. scala maven pom文件

    老司机的spark maven pom文件 pom文件一: 4.0.0 <groupId>com.glsx</groupId> <artifactId>spark- ...

  5. Hadoop Maven pom文件示例

    Hadoop Maven pom文件示例 @(Hadoop) <?xml version="1.0" encoding="UTF-8"?> < ...

  6. Maven pom文件常用配置,转载

    什么是POM Project Object Model,项目对象模型.通过xml格式保存的pom.xml文件.作用类似ant的build.xml文件,功能更强大.该文件用于管理:源代码.配置文件.开发 ...

  7. maven pom文件

    setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件:而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和li ...

  8. maven pom文件详解

    http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html http://blog.csdn.net/houpengfei111/a ...

  9. Maven pom文件中dependency scope用法

    在Maven中依赖的域有:compile.provided.runtime.system.test.import 一.compile(默认) 当依赖的scope为compile的时候,那么当前这个依赖 ...

随机推荐

  1. [BZOJ1232][[Usaco2008Nov]安慰奶牛cheer(MST)

    题目:http://hzwer.com/2493.html 分析:对于每条边,贡献的价值是这条边的边权加上这条边连接的两点的权值,所以可以把每条边的边权加上两顶点的点权作为新的边权,然后跑个最小生成树 ...

  2. rar 命令

    1 wger http://www.rarlab.com/rar/rarlinux-3.9.2.tar.gz 下载文件包 会下载在当前目录 2 cp xxx.xxx ../ 复制xxx.xxx到上个目 ...

  3. 链接错误-库冲突(libcmt.lib和libcmtd.lib)

    在同一个项目中,所有的源文件必须链接相同的C运行时库.如果某一文件用了Multithreaded DLL版本,而其他文件用了Single-Threaded或者Multithreaded版本的库,也就是 ...

  4. 东大OJ-Max Area

    1034: Max Area 时间限制: 1 Sec  内存限制: 128 MB 提交: 40  解决: 6 [提交][状态][讨论版] 题目描述 又是这道题,请不要惊讶,也许你已经见过了,那就请你再 ...

  5. Java--剑指offer(2)

    6.把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. a)使用ArrayList来存放元素 public class Solution { public static int min ...

  6. android 之fragment创建

    1.使用xml标签 1.1定义两个重要属性  <fragment         android:id="@+id/fregment_top"        android: ...

  7. nginx 编译参数详解(运维不得不看)

    nginx参数: --prefix= 指向安装目录 --sbin-path 指向(执行)程序文件(nginx) --conf-path= 指向配置文件(nginx.conf) --error-log- ...

  8. asp.net mvc 多级目录结构

    ikmb@163.com ASP.NET MVC默认的文件组织和URL访问都是一级,我们通常要将一个功能模块组织到一个目录下.方法是:1.文件组织 分别在Controllers和Views文件夹下建议 ...

  9. 【BZOJ 1178】【APIO 2009】CONVENTION会议中心

    http://www.lydsy.com/JudgeOnline/problem.php?id=1178 这道题想了好久没想明白,倍增数组通过看题解很快就明白了,但是一小段区间内应有的最多线段数一直不 ...

  10. 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定

    介绍背水一战 Windows 10 之 绑定 TemplateBinding 绑定 与 RelativeSource 绑定 与 StaticResource 绑定 示例1.演示 TemplateBin ...