gpt4 book ai didi

java - 在 Controller 中注入(inject)属性值的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 07:14:48 25 4
gpt4 key购买 nike

这真的是从属性文件向 Controller 注入(inject)属性的最简单方法吗?然后,它需要在每个需要一些属性的 Controller 上导入属性文件内容。在像我这样的项目中,大约有 30 个 Controller ,其中 10 个需要这个国家属性(property),我猜它看起来会很困惑。我是否正确理解了 @Value 的用法?

@Controller
@RequestMapping(value = "/simple")
@ImportResource("classpath:/META-INF/properties-config.xml")
public class SimpleController {

private @Value("#{exampleProperties['simple.country']}") String country;

}

properties-config.xml (跳过了 xml 和架构内容)

<beans>
<util:properties id="exampleProperties" location="classpath:/simple.properties" />
</beans>

此外,当尝试在多个 Controller 中导入properties-config.xml 资源时,我也会收到此类消息。这似乎不是正确的方法,但我想不出更好的方法..

01 Apr 2011 04:52:29,859 INFO  org.springframework.beans.factory.support.DefaultListableBeanFactory []: Overriding bean definition for bean 'exampleProperties': replacing [Generic bean: class [org.springframework.beans.factory.config.PropertiesFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Generic bean: class [org.springframework.beans.factory.config.PropertiesFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null]

最佳答案

我认为对于这种情况,您的方法过于复杂。典型的方法是使用 <context:property-placeholder> 。您声明

<context:property-placeholder location = "classpath:/simple.properties" />

在一个地方,并在 Controller 中使用它的属性

private @Value("${simple.country}") String country;

另外,我认为使用 @ImportResource 不是一个好主意。这样,它违反了依赖注入(inject)原则 - 这些属性是 Controller 工作的上下文的一部分,因此 Controller 不应该知道它们是如何加载的。

关于java - 在 Controller 中注入(inject)属性值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5508362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com