jar包中的类如何读取到springspring jar包配置文件件的属性

博客分类:
一个系统中通常会存在如下一些以Properties形式存在的配置文件
1.数据库配置文件demo-db.properties:
database.url=jdbc:mysql://localhost/smaple
database.driver=com.mysql.jdbc.Driver
database.user=root
database.password=123
2.消息服务配置文件demo-mq.properties:
#congfig of ActiveMQ
mq.java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
mq.java.naming.provider.url=failover:(tcp://localhost:61616?soTimeout=30000&connectionTimeout=30000)?jms.useAsyncSend=true&timeout=30000
mq.java.naming.security.principal=
mq.java.naming.security.credentials=
jms.MailNotifyQueue.consumer=5
3.远程调用的配置文件demo-remote.properties:
remote.ip=localhost
remote.port=16800
remote.serviceName=test
一、系统中需要加载多个Properties配置文件
应用场景:Properties配置文件不止一个,需要在系统启动时同时加载多个Properties文件。
配置方式:
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"&
&!-- 将多个配置文件读取到容器中,交给Spring管理 --&
&bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="locations"&
&!-- 这里支持多种寻址方式:classpath和file --&
&value&classpath:/opt/demo/config/demo-db.properties&/value&
&!-- 推荐使用file的方式引入,这样可以将配置和代码分离 --&
&value&file:/opt/demo/config/demo-mq.properties&/value&
&value&file:/opt/demo/config/demo-remote.properties&/value&
&/property&
&!-- 使用MQ中的配置 --&
&bean id="MQJndiTemplate" class="org.springframework.jndi.JndiTemplate"&
&property name="environment"&
&prop key="java.naming.factory.initial"&${mq.java.naming.factory.initial}&/prop&
&prop key="java.naming.provider.url"&${mq.java.naming.provider.url}&/prop&
&prop key="java.naming.security.principal"&${mq.java.naming.security.principal}&/prop&
&prop key="java.naming.security.credentials"&${mq.java.naming.security.credentials}&/prop&
&prop key="userName"&${mq.java.naming.security.principal}&/prop&
&prop key="password"&${mq.java.naming.security.credentials}&/prop&
&/property&
我们也可以将配置中的List抽取出来:
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"&
&!-- 将多个配置文件位置放到列表中 --&
&bean id="propertyResources" class="java.util.ArrayList"&
&constructor-arg&
&!-- 这里支持多种寻址方式:classpath和file --&
&value&classpath:/opt/demo/config/demo-db.properties&/value&
&!-- 推荐使用file的方式引入,这样可以将配置和代码分离 --&
&value&file:/opt/demo/config/demo-mq.properties&/value&
&value&file:/opt/demo/config/demo-remote.properties&/value&
&/constructor-arg&
&!-- 将配置文件读取到容器中,交给Spring管理 --&
&bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="locations" ref="propertyResources" /&
&!-- 使用MQ中的配置 --&
&bean id="MQJndiTemplate" class="org.springframework.jndi.JndiTemplate"&
&property name="environment"&
&prop key="java.naming.factory.initial"&${mq.java.naming.factory.initial}&/prop&
&prop key="java.naming.provider.url"&${mq.java.naming.provider.url}&/prop&
&prop key="java.naming.security.principal"&${mq.java.naming.security.principal}&/prop&
&prop key="java.naming.security.credentials"&${mq.java.naming.security.credentials}&/prop&
&prop key="userName"&${mq.java.naming.security.principal}&/prop&
&prop key="password"&${mq.java.naming.security.credentials}&/prop&
&/property&
二、整合多工程下的多个分散的Properties
应用场景:工程组中有多个配置文件,但是这些配置文件在多个地方使用,所以需要分别加载。
配置如下:
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"&
&!-- 将DB属性配置文件位置放到列表中 --&
&bean id="dbResources" class="java.util.ArrayList"&
&constructor-arg&
&value&file:/opt/demo/config/demo-db.properties&/value&
&/constructor-arg&
&!-- 将MQ属性配置文件位置放到列表中 --&
&bean id="mqResources" class="java.util.ArrayList"&
&constructor-arg&
&value&file:/opt/demo/config/demo-mq.properties&/value&
&/constructor-arg&
&!-- 用Spring加载和管理DB属性配置文件 --&
&bean id="dbPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="order" value="1" /&
&property name="ignoreUnresolvablePlaceholders" value="true" /&
&property name="locations" ref="dbResources" /&
&!-- 用Spring加载和管理MQ属性配置文件 --&
&bean id="mqPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="order" value="2" /&
&property name="ignoreUnresolvablePlaceholders" value="true" /&
&property name="locations" ref="mqResources" /&
&!-- 使用DB中的配置属性 --&
&bean id="rmsDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${demo.db.driver}" p:url="${demo.db.url}" p:username="${demo.db.username}"
p:password="${demo.db.password}" p:maxActive="${demo.db.maxactive}"p:maxWait="${demo.db.maxwait}"
p:poolPreparedStatements="true" p:defaultAutoCommit="false"&
&!-- 使用MQ中的配置 --&
&bean id="MQJndiTemplate" class="org.springframework.jndi.JndiTemplate"&
&property name="environment"&
&prop key="java.naming.factory.initial"&${mq.java.naming.factory.initial}&/prop&
&prop key="java.naming.provider.url"&${mq.java.naming.provider.url}&/prop&
&prop key="java.naming.security.principal"&${mq.java.naming.security.principal}&/prop&
&prop key="java.naming.security.credentials"&${mq.java.naming.security.credentials}&/prop&
&prop key="userName"&${mq.java.naming.security.principal}&/prop&
&prop key="password"&${mq.java.naming.security.credentials}&/prop&
&/property&
注意:其中order属性代表其加载顺序,而ignoreUnresolvablePlaceholders为是否忽略不可解析的 Placeholder,如配置了多个PropertyPlaceholderConfigurer,则需设置为true。这里一定需要按照这种方式设置这两个参数。
三、Bean中直接注入Properties配置文件中的值
应用场景:Bean中需要直接注入Properties配置文件中的值 。例如下面的代码中需要获取上述demo-remote.properties中的值:
public class Client() {
配置如下:
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns=""
xmlns:xsi=""
xmlns:util=""
xsi:schemaLocation="
&!-- 这种加载方式可以在代码中通过@Value注解进行注入,
可以将配置整体赋给Properties类型的类变量,也可以取出其中的一项赋值给String类型的类变量 --&
&!-- &util:properties/& 标签只能加载一个文件,当多个属性文件需要被加载的时候,可以使用多个该标签 --&
&util:properties id="remoteSettings" location="file:/opt/demo/config/demo-remote.properties" /&
&!-- &util:properties/& 标签的实现类是PropertiesFactoryBean,
直接使用该类的bean配置,设置其locations属性可以达到一个和上面一样加载多个配置文件的目的 --&
&bean id="settings"
class="org.springframework.beans.factory.config.PropertiesFactoryBean"&
&property name="locations"&
&value&file:/opt/rms/config/rms-mq.properties&/value&
&value&file:/opt/rms/config/rms-env.properties&/value&
&/property&
Client类中使用Annotation如下:
import org.springframework.beans.factory.annotation.V
public class Client() {
@Value("#{remoteSettings['remote.ip']}")
@Value("#{remoteSettings['remote.port']}")
@Value("#{remoteSettings['remote.serviceName']}")
四、Bean中存在Properties类型的类变量
应用场景:当Bean中存在Properties类型的类变量需要以注入的方式初始化
1. 配置方式:我们可以用(三)中的配置方式,只是代码中注解修改如下
import org.springframework.beans.factory.annotation.V
import org.springframework.beans.factory.annotation.A
public class Client() {
@Value("#{remoteSettings}")
private Properties remoteS
2. 配置方式:也可以使用xml中声明Bean并且注入
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"&
&!-- 可以使用如下的方式声明Properties类型的FactoryBean来加载配置文件,这种方式就只能当做Properties属性注入,而不能获其中具体的值 --&
&bean id="remoteConfigs" class="org.springframework.beans.factory.config.PropertiesFactoryBean"&
&property name="locations"&
&value&file:/opt/demo/config/demo-remote.properties&/value&
&/property&
&!-- 远端调用客户端类 --&
&bean id="client" class="com.demo.remote.Client"&
&property name="properties" ref="remoteConfigs" /&
代码如下:
import org.springframework.beans.factory.annotation.A
public class Client() {
//@Autowired也可以使用
private Properties remoteS
//getter setter
上述的各个场景在项目群中特别有用,需要灵活的使用上述各种配置方式。
浏览 47772
如果文件内容一致,后面的会覆盖前面的配置吗肯定会了。 原因如下:public
class Properties extends Hashtable&Object,Object&
浏览: 762092 次
来自: 上海
psubscribe对我有用
js中怎么调用配置文件的参数呢
ws715 写道如果文件内容一致,后面的会覆盖前面的配置吗肯定 ...
如果文件内容一致,后面的会覆盖前面的配置吗
[b][b]D:\workSpace\.metadata\.p ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。读取spring配置文件的方法(spring读取资源文件)
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了读取spring配置文件的方法,需要的朋友可以参考下
1.spring配置文件
代码如下:&bean id="configproperties" &&&&&&&& class="org.springframework.beans.factory.config.PropertiesFactoryBean"&&&&&&&&&& &property name="location" value="classpath:jdbc.properties"/&&&& &/bean&
2.读取属性方法
代码如下:ApplicationContext c=new ClassPathXmlApplicationContext("classpath:applicationContext-datasource.xml");Properties p=(Properties)c.getBean("configproperties");System.out.println(p.getProperty("jdbcOrcale.driverClassName"));另一个朋友提供的读取spring配置文件的方法,也分享一下吧直接读取方式: 代码如下:public void test() throws IOException&{&&Resource resource = ApplicationContextFactory.getApplicationContext().getResource("classpath:com/springdemo/resource/test.txt");&&File file = resource.getFile();&&byte[] buffer =new byte[(int) file.length()];&&FileInputStream is =new FileInputStream(file);
&&is.read(buffer, 0, buffer.length);&&is.close();&&String str = new String(buffer);&&System.out.println(str);
通过spring配置方式读取: 代码如下:package com.springdemo.
import org.springframework.core.io.R
public class ResourceBean {
&private R
&public Resource getResource() {&&&}
&public void setResource(Resource resource) {&&this.resource =&}}
spring bean配置:
代码如下:&&!-- 可以直接将一个文件路径赋值给Resource类型的resource属性,spring会根据路径自动转换成对应的Resource --&&&bean id="resourceBean" class="com.springdemo.resource.ResourceBean" &&&&property name="resource" value="classpath:/com/springdemo/resource/test.txt" &&/property&&&/bean&
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,...
实际项目中,通常将一些可配置的定制信息放到属性文件中(如数据库连接信息,邮件发送配置信息等),便于统一配置管理。例中将需配置的属性信息放在属性文件/WEB-INF/configInfo.propert...
在Spring初始化时,可以使用Properties配置器把properties文件装载到Spring的上下文中。
xmlns:cont...
Spring提供了注解@Value,用于在程序中获取properties配置文件属性值。例如:
1. applicationContext.xml中指定配置文件。
当有多个配置文件时,上述配置...
第一步:bean配置
classpath:config/param/jdbc.properties
classpath:config/param/sy...
spring properties
主要使用了spring-core-4.1.4.RELEASE-sources.jar 这个jar包里的 PropertiesLoaderUtils.loadProperties 方法。不说了,直接上代...
Spring 支持@Value注解的方式获取properties文件中的配置值,从而大大简化了读取配置文件的代码。
使用方法如下:
假如有一个参数配置文件test.properties
#数据库配置
项目中的一些灵活配置,设置到properties文件中,项目中通过读取properties中相应的值来使用,修改时,也只修改properties即可。以上为使用的好处,现在,总结一下项目中propet...
在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)jar包中的类如何读取到spring配置文件的属性_百度知道
jar包中的类如何读取到spring配置文件的属性
我将这样的两个类PropInJar和InvokeMap封装成jar包,如下图1,2,然后导入到项目中,并配置spring的配置文件,如下图3,服务启动后,jar包中的InvokeMap类读不到配置文件的属性值name和‘张三’,求大神解答这是为什么呢?,需要怎么改?本人还是新手,恳请批评...
我有更好的答案
用反射就可以了 spring也是基于反射的解析xml 根据类路径得到class(Class.forName) 然后根据你给的property通过getField拿到Field再实例化 再赋值
问题是spring的xml配置文件无法确定文件的位置,怎么读取到?我看过sqlSessionFactory这样的bean也是导入相应的jar,这样的jar是怎么读取到项目中spring配置的属性值的?
采纳率:77%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 spring读取jar包 的文章

 

随机推荐