配置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-compendium
http://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
@Singleton
class AppConfig {
@ConfigProperty('${task-imServerName}')
String imServerName
@PostConstruct
void refresh() {
println("Configuration updated (imServerName = " + imServerName + ")")
}
}