在发布这个问题之前,我谷歌从 Spring 项目(它不是基于 Web 的项目)中获取属性。我很困惑,因为每个人都在谈论 application-context.xml 并且有类似的配置
但是,我正在使用 Spring 开发普通的 Java 项目(没有 Web 应用程序和类似的东西)。但我想从属性文件中获取一些需要在 JAVA 文件中使用的通用属性。如何使用 Spring/Spring Annotations 实现这一点?
我的项目下应该在哪里配置myprops.properties文件以及如何通过spring调用?
我的理解是 application-context.xml 仅用于基于 Web 的项目。如果没有,我应该如何配置这个 application-context.xml,因为我没有 web.xml 来定义 application-context.xml
最佳答案
您可以创建一个基于 XML 的应用程序上下文,例如:
ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");
如果 xml 文件位于您的类路径中。或者,您可以使用文件系统上的文件:
ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");
更多信息请访问 Spring reference docs .您还应该注册 shutdown hook确保正常关机:
ctx.registerShutdownHook();
接下来,您可以使用 PropertyPlaceHolderConfigurer从“.properties”文件中提取属性并将它们注入(inject)到您的 bean 中:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:com/foo/jdbc.properties"/>
</bean>
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
最后,如果您更喜欢基于注解的配置,您可以使用 @Value
注解将属性注入(inject)到您的 bean 中:
@Component
public class SomeBean {
@Value("${jdbc.url}")
private String jdbcUrl;
}
关于java - 如何在spring项目中读取属性文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14570477/