java - 如何在spring项目中读取属性文件?

标签 java spring properties spring-annotations

在发布这个问题之前,我谷歌从 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/

相关文章:

spring - 我应该将我的 Vaadin 10+ 静态文件放在哪里?

properties - 未将属性声明为可选属性会导致 "property not initialized at super.init()"错误

angular - 属性绑定(bind)与属性插值

java - XPATH表达式输出父节点和匹配的子节点,排除不匹配的子节点

java - Spring Thymeleaf 中枚举的本地化

java - 替换 cookie 值上的逗号字符

java - 如何将状态从 servlet 发送到客户端?

java - Spring Data JPA CrudRepository 比较列的方法名称?

java - Websphere Liberty- java.lang.NoClassDefFoundError : com. ibm.websphere.ssl.SSLException

properties - 覆盖 Salesforce Apex 中抽象类的属性