如何让spring.util.Properties对象弹出以解析Spring中的属性值,如$ {mail.port}中的Properties对象

时间:2015-04-22 10:09:54

标签: java spring

您好我正在创建一个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

2 个答案:

答案 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文件