配置com.ff.cfg文件
将该文件放入ect文件中,其中com.ff为servicemix中persistent-id
com.ff.cfg中的内容如下:
imServerName = com.test
ServiceMix对配置文件的操作如下
config:property persistent-id config:property-set config:property update config:property list
pom.xml中需要引入如下的包
<dependency><groupId>org.osgi</groupId><artifactId>org.osgi.compendium</artifactId><version>5.0.0</version></dependency><dependency><groupId>org.osgi</groupId><artifactId>org.osgi.core</artifactId><version>6.0.0</version></dependency>
spring中所用到的包
<dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>3.2.17.RELEASE</version></dependency>
Blueprint 中所用到的包
<dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version><optional>true</optional></dependency><dependency><groupId>org.apache.aries.blueprint</groupId><artifactId>blueprint-maven-plugin-annotation</artifactId><version>1.1.0</version><optional>true</optional></dependency><dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.4.10</version></dependency><dependency><groupId>org.ops4j.pax.cdi</groupId><artifactId>pax-cdi-api</artifactId><version>1.0.0.RC2</version><optional>true</optional></dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
Spring容器读取配置信息
1.1 在Spring.xml中的头部需要添加如下信息
mlns:osgix="http://www.springframework.org/schema/osgi-compendium" xsi:schemaLocation= http://www.springframework.org/schema/osgi-compendiumhttp://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd
1.2 Spring.xml中配置信息如下
(1) 第一种配置,修改配置文件后,需要重启boudle,才可以修改项目中的配置值
<bean id="ossConfig" class="com.yf.af.config.OssConfig" init-method="refresh"> <property name="imServerName" value="${task-imServerName}"/></bean><osgix:cm-properties id="preProps" persistent-id="com.yf.af" > <prop key="task-imServerName">default value</prop></osgix:cm-properties><context:property-placeholder properties-ref="preProps"/>
(2)第二种配置,修改配置文件后,自动修改配置内容
<bean id="ossConfig" class="com.yf.af.config.OssConfig" init-method="refresh"><osgix:managed-properties persistent-id="com.yf.af" update-strategy="container-managed"/>
该值设默认属性值,可以不写
<property name="tokenExpireTime" value="100"/> </bean><bean id="testConfig" class="com.yf.af.config.TestConfig" init-method="test"><property name="ossConfig" ref="ossConfig"/></bean>
(3)第三种配置,修改配置文件后,手动修改配置内容(其在项目代码中进入手动获得进行修改)
bean id="ossConfig" class="com.yf.af.config.OssConfig" init-method="refresh"><osgix:managed-properties persistent-id="com.yf.af" update-strategy="bean-managed" update-method="updateCallback"/> <property name="tokenExpireTime" value="100"/> </bean><bean id="testConfig" class="com.yf.af.config.TestConfig" init-method="test"><property name="ossConfig" ref="ossConfig"/></bean>
(注 (2)、(3)中方法中需要将实体类中的属性值的名字现配置文件中的key的名字保持相同,可查看http://docs.spring.io/osgi/docs/1.2.0-m2/reference/html/compendium.html)
- 实体类接收配置信息
Public class TestConfig{ Private String imServerName; public String getImServerName() { return imServerName; } public void setImServerName(String imServerName) { this.imServerName = imServerName; }}
- Blueprint容器读取配置信息
使用注解的形式配置,该为实体类中的代码,其为groovg的代码风格
@Config(pid = "com.yf.af", updatePolicy = "reload", defaults = [ @DefaultProperty(key = "task-imServerName", value = "default imServerName") ]) @Named @Singletonclass AppConfig { @ConfigProperty('${task-imServerName}') String imServerName@PostConstruct void refresh() { println("Configuration updated (imServerName = " + imServerName + ")") }}