当前位置: 首页 > 面试题库 >

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

益明朗
2023-03-14
问题内容

在发布此问题之前,我用Google搜索Spring项目(不是基于Web的项目)中的属性。我很困惑,因为每个人都在谈论application-
context.xml并具有类似的配置

但是,我正在使用Spring进行普通的Java项目(没有Web应用程序之类的东西)。但是我想从属性文件中获取一些通用属性,并且需要在JAVA文件中使用。如何通过使用Spring
/ Spring注释实现此目的?

在我的项目下应在哪里配置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参考文档。您还应该注册一个关闭钩子,以确保正常关闭:

 ctx.registerShutdownHook();

接下来,可以使用PropertyPlaceHolderConfigurer从“
.properties”文件中提取属性,并将其注入到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注释将属性注入到您的bean中:

@Component
public class SomeBean {

    @Value("${jdbc.url}") 
    private String jdbcUrl;
}


 类似资料:
  • 每个人都知道如果我们想要读取属性文件,我们可以这样做: 但是,现在我有了一个类似于SpringBoot的框架。它可以将Spring与Mybatis集成在一起。 问题是前面的代码只能读取我的项目类路径文件,但我需要使用我的框架读取project属性文件。我是怎么做的?

  • 问题内容: 我正在使用Gradle脚本工作,需要在其中读取文件并使用中的属性文件中的值。我以下面的方式来做。我运行了以下脚本,它现在引发错误,但是它也没有执行创建,删除和复制文件的操作。我试图打印变量的值,它显示正确的值。 有人可以让我知道这是否是正确的方法吗?我认为另一种方法是在中定义所有内容并在中使用它。有人可以让我知道如何从中访问属性吗? 文件: 文件: 问题答案: 如果使用默认文件,则可以

  • 问题内容: 在我的目标文件夹中,有2个文件夹,lib和conf。所有的属性文件都放在conf文件夹中,而jars放在lib foulder中。 在Spring Boot之前,我们在spring.xml中使用以下配置来使用@value 但是在spring启动中,我不知道如何在Java代码中执行相同的操作。 我尝试了以下操作,但是没有用 问题答案: 问题的标题和描述让我有些困惑。希望我不会再让你对我的

  • 我有一个限定词 限定符“jdbc”是定义为 这是返回该限定符的数据源并正常工作的。 现在,我想从应用程序中读取限定符名称。属性。所以我把代码改为 其中,数据库。连接器。在我的应用程序中,name=jdbc。属性。 但当我这样做的时候,这会产生一个错误 应用程序启动失败 说明: main中的字段userService。Java语言RestTestController需要“org”类型的bean。sp

  • 我如何添加/覆盖max.poll.interval.ms和max.poll.records在我的. yml文件在Spring启动Kafka微服务项目 我试过了,但没用

  • 问题内容: 有谁知道如何在Maven中读取文件。我知道有多种方法可以使用资源过滤来读取属性文件并从中设置值,但是我想要在中使用以下方法: 问题答案: 试用 Properties Maven插件