您好我正在创建一个Spring应用程序的独立jar,它将是一个实用程序服务,所以我将获得java.util.Properties的对象,我需要在我的spring应用程序中使用此属性,
所以我需要做的是创建一个类,在其结构中将Properties对象作为参数
我所做的是
public class MailService {
public MailService(Properties properties) {
PropertySourcesPlaceholderConfigurer pops = new PropertySourcesPlaceholderConfigurer();
pops.setProperties(properties);
ClassPathXmlApplicationContext ctx = null;
try {
ctx = new ClassPathXmlApplicationContext("/resources/xml/spring/mailservice_context.xml");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ctx != null) {
ctx.close();
ctx = null;
}
}
}
}
我希望" mail.host" ," mail.port"来自我在MailService构造函数中传递的属性对象
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="port" value="${mail.port}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="javaMailProperties">
<props>
<prop key="mail.transport.protocol">${mail.transport.protocol}</prop>
<prop key="mail.smtps.auth">${mail.smtps.auth}</prop>
<prop key="mail.smtps.starttls.enable">${mail.smtps.starttls.enable}</prop>
<prop key="mail.debug">${mail.debug}</prop>
</props>
</property>
</bean>
我如何从java的属性对象中获取此值,我正在使用spring 4.1
答案 0 :(得分:1)
添加以下两行:
ctx.addBeanFactoryPostProcessor(pops);
ctx.refresh();
后:
ctx = new
ClassPathXmlApplicationContext("/resources/xml/spring/mailservice_context.xml");
这会在ClassPathXmlApplicationContext
内设置属性,而.refresh()
会加载它们。
答案 1 :(得分:0)
这是我在应用程序启动时用来加载数据库配置文件的内容:
dalvikvm
其中System.setProperty("db.config", options.getDbConfigFilePath());
是一个带有filePath的字符串(从apache cli传递)
并在context.xml中
options.getDbConfigFilePath()
<context:property-placeholder location="file:${db.config}"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="password" value="${jdbc.password}"/>
<property name="username" value="${jdbc.username}"/>
</bean>
参数来自db.config文件