0

我有一个xml bean配置如下:

<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
        <property name="dataSource" ref="dataSource" />
        <property name="jpaDialect" ref="openJPADialect" />
    </bean>

我想添加一个新属性defaultTimeout,但是我不想对其进行硬编码。

我想改为放置一些类,该类将从内存缓存中的某个值中检索此属性的值(实际上从哪里开始并不重要)

我以前听说过并使用过 - org.springframework.beans.factory.config.PropertyPlaceholderConfigurer但是它从属性文件中检索值,这并不是我所需要的。

你能告诉我的方向吗?

4

2 回答 2

0

尝试查看 com.typesafe.config 库https://www.javadoc.io/doc/com.typesafe/config/1.2.1。这允许您加载配置文件。

使用这个库来创建一个 config 类型的 bean。像这样的东西。这是一个 java 配置,但可以适应 XML 实现。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.your.package")
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    @Bean
    public Config properties() throws Exception {
        String path = ""; // path to properties file
        Config conf = ConfigFactory.parseFile(new File(path));

        return conf;
    }
}

然后在您的组件类中,您可以自动装配 bean 并使用存储在内存 bean 中的属性。

@Autowired
private Config properties;
...
properties.getString("your property key");
于 2018-07-31T13:33:33.700 回答
0

我想放置一些类而不是这个属性,该类将从内存缓存中的某个值中检索该属性的值(实际上从哪里开始并不重要)

将你的 txManager 注入这个并在那里设置 defaultTimeout 怎么样?

于 2018-07-31T13:25:07.797 回答