当前位置:首页 > java技术文章 > 详解Spring Boot配置文件application.properties

关于使用Spring Boot配置文件application.properties示例效果

  • 发布时间:
  • 作者:码农之家原创
  • 点击:86

这篇文章主要知识点是关于Spring、Boot、application.properties、Spring Boot中配置文件application.properties使用 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Java WebSocket编程:发、部署和保护动态Web应用
  • 类型:Java WebSocket大小:74.3 MB格式:PDF作者:DannyCoward,刘建,夏先波
立即下载

详解Spring Boot配置文件application.properties

在 Spring Boot 中,配置文件有两种不同的格式,一个是 properties ,另一个是 yaml 。

虽然 properties 文件比较常见,但是相对于 properties 而言,yaml 更加简洁明了,而且使用的场景也更多,很多开源项目都是使用 yaml 进行配置(例如 Hexo)。除了简洁,yaml 还有另外一个特点,就是 yaml 中的数据是有序的,properties 中的数据是无序的,在一些需要路径匹配的配置中,顺序就显得尤为重要(例如我们在 Spring Cloud Zuul 中的配置),此时我们一般采用 yaml。

本文主要来看看 properties 的问题。

位置问题

首先,当我们创建一个 Spring Boot 工程时,默认 resources 目录下就有一个 application.properties 文件,可以在 application.properties 文件中进行项目配置,但是这个文件并非唯一的配置文件,在 Spring Boot 中,一共有 4 个地方可以存放 application.properties 文件。

  • 当前项目根目录下的 config 目录下
  • 当前项目的根目录下
  • resources 目录下的 config 目录下
  • resources 目录下

按如上顺序,四个配置文件的优先级依次降低。如下:

详解Spring Boot配置文件application.properties

这四个位置是默认位置,即 Spring Boot 启动,默认会从这四个位置按顺序去查找相关属性并加载。但是,这也不是绝对的,我们也可以在项目启动时自定义配置文件位置。

例如,现在在 resources 目录下创建一个 javaboy 目录,目录中存放一个 application.properties 文件,那么正常情况下,当我们启动 Spring Boot 项目时,这个配置文件是不会被自动加载的。我们可以通过 spring.config.location 属性来手动的指定配置文件位置,指定完成后,系统就会自动去指定目录下查找 application.properties 文件。

详解Spring Boot配置文件application.properties

此时启动项目,就会发现,项目以 classpath:/javaboy/application.propertie 配置文件启动。

这是在开发工具中配置了启动位置,如果项目已经打包成 jar ,在启动命令中加入位置参数即可:

java -jar properties-0.0.1-SNAPSHOT.jar --spring.config.location=classpath:/javaboy/

 

文件名问题

对于 application.properties 而言,它不一定非要叫 application ,但是项目默认是去加载名为 application 的配置文件,如果我们的配置文件不叫 application ,也是可以的,但是,需要明确指定配置文件的文件名。

方式和指定路径一致,只不过此时的 key 是 spring.config.name 。

首先我们在 resources 目录下创建一个 app.properties 文件,然后在 IDEA 中指定配置文件的文件名:

详解Spring Boot配置文件application.properties

指定完配置文件名之后,再次启动项目,此时系统会自动去默认的四个位置下面分别查找名为 app.properties 的配置文件。当然,允许自定义文件名的配置文件不放在四个默认位置,而是放在自定义目录下,此时就需要明确指定 spring.config.location 。

配置文件位置和文件名称可以同时自定义。

普通的属性注入

由于 Spring Boot 源自 Spring ,所以 Spring 中存在的属性注入,在 Spring Boot 中一样也存在。由于 Spring Boot 中,默认会自动加载 application.properties 文件,所以简单的属性注入可以直接在这个配置文件中写。

例如,现在定义一个 Book 类:

public class Book {
 private Long id;
 private String name;
 private String author;
 //省略 getter/setter
}

然后,在 application.properties 文件中定义属性:

book.name=三国演义
book.author=罗贯中
book.id=1

按照传统的方式(Spring中的方式),可以直接通过 @Value 注解将这些属性注入到 Book 对象中:

@Component
public class Book {
 @Value("${book.id}")
 private Long id;
 @Value("${book.name}")
 private String name;
 @Value("${book.author}")
 private String author;
 //省略getter/setter
}

注意

Book 对象本身也要交给 Spring 容器去管理,如果 Book 没有交给 Spring 容器,那么 Book 中的属性也无法从 Spring 容器中获取到值。

配置完成后,在 Controller 或者单元测试中注入 Book 对象,启动项目,就可以看到属性已经注入到对象中了。

一般来说,我们在 application.properties 文件中主要存放系统配置,这种自定义配置不建议放在该文件中,可以自定义 properties 文件来存在自定义配置。

例如在 resources 目录下,自定义 book.properties 文件,内容如下:

book.name=三国演义
book.author=罗贯中
book.id=1

此时,项目启动并不会自动的加载该配置文件,如果是在 XML 配置中,可以通过如下方式引用该 properties 文件:

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

如果是在 Java 配置中,可以通过 @PropertySource 来引入配置:

@Component
@PropertySource("classpath:book.properties")
public class Book {
 @Value("${book.id}")
 private Long id;
 @Value("${book.name}")
 private String name;
 @Value("${book.author}")
 private String author;
 //getter/setter
}

这样,当项目启动时,就会自动加载 book.properties 文件。

这只是 Spring 中属性注入的一个简单用法,和 Spring Boot 没有任何关系。

类型安全的属性注入

Spring Boot 引入了类型安全的属性注入,如果采用 Spring 中的配置方式,当配置的属性非常多的时候,工作量就很大了,而且容易出错。

使用类型安全的属性注入,可以有效的解决这个问题。

@Component
@PropertySource("classpath:book.properties")
@ConfigurationProperties(prefix = "book")
public class Book {
 private Long id;
 private String name;
 private String author;
 //省略getter/setter
}

这里,主要是引入 @ConfigurationProperties(prefix = “book”) 注解,并且配置了属性的前缀,此时会自动将 Spring 容器中对应的数据注入到对象对应的属性中,就不用通过 @Value 注解挨个注入了,减少工作量并且避免出错。

总结
application.properties 是 Spring Boot 中配置的一个重要载体,很多组件的属性都可以在这里定制。

Spring Boot中配置文件application.properties使用

一、配置文档配置项的调用

Spring Boot中配置文件application.properties使用

Spring Boot中配置文件application.properties使用

启动后在浏览器直接输入http://localhost:18080/user/test,就直接打印出配置文件中的配置内容。

二、绑定对象bean调用

有时候属性太多了,一个个绑定到属性字段上太累,官方提倡绑定一个对象的bean,这里我们建一个ConfigBean.java类,顶部需要使用注解@ConfigurationProperties(prefix = “com”)来指明使用哪个

@ConfigurationProperties(prefix = "com")
public class ConfigBean {
  private String name;
  private String id;

  // 省略getter和setter
}

这里配置完还需要在spring Boot入口类加上@EnableConfigurationProperties并指明要加载哪个bean,如果不写ConfigBean.class,在bean类那边添加

@SpringBootApplication
@EnableConfigurationProperties({ConfigBean.class})
public class Chapter2Application {
  public static void main(String[] args) {
    SpringApplication.run(Chapter2Application.class, args);
  }
} 

最后在Controller中引入ConfigBean使用即可,如下:

@RestController
public class UserController {
  @Autowired
  ConfigBean configBean;

  @RequestMapping("/")
  public String hexo(){
    return configBean.getName()+configBean.getId();
  }
} 

三、参数间引用 

在application.properties中的各个参数之间也可以直接引用来使用,就像下面的设置:

com.name="张三"
com.id="8"
com.psrInfo=${com.name}编号为${com.id} 

这样我们就可以只是用psrInfo这个属性就好

 四、使用自定义新建的配置文件

  我们新建一个bean类,如下:

@Configuration
@ConfigurationProperties(prefix = "com.md") 
@PropertySource("classpath:test.properties")
public class ConfigTestBean {
  private String name;
  private String want;
  // 省略getter和setter
}

主要就是加了一个注解:@PropertySource("classpath:test.properties")

五、配置文件优先级

application.properties和application.yml文件可以放在一下四个位置:

  • 外置,在相对于应用程序运行目录的/congfig子目录里。
  • 外置,在应用程序运行的目录里
  • 内置,在config包内
  • 内置,在Classpath根目录

同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性,如图:

Spring Boot中配置文件application.properties使用

此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.yml里面的属性就会覆盖application.properties里的属性。

ps:下面看下SpringBoot读取application.properties文件

SpringBoot读取application.properties文件,通常有3种方式

1. @Value  例如:

@Value("${spring.profiles.active}")
private String profileActive;------相当于把properties文件中的spring.profiles.active注入到变量profileActive中

2. @ConfigurationProperties  例如:

@Component
@ConfigurationProperties(locations = "classpath:application.properties",prefix="test")
public class TestProperties {
String url;
String key;
}

其他类中使用时,就可以直接注入该TestProperties 进行访问相关的值

3. 使用Enviroment   例如:

private Enviroment env;
env.getProperty("test.url");

而env方式效率较低

注:@ConfigurationProperties也可用于其他.properties文件,只要locations指定即可

总结

以上所述是小编给大家介绍的Spring Boot中配置文件application.properties使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

推荐内容

idea2020注册激活码(激活到2100年)

实例分析Java实现的zip压缩及解压缩工具类

python3 pandas 如何读取MySQL数据和插入

ThinkPHP3.2.3框架如何实现分页功能

深入理解JS函数stack size计算方法

展开 +

收起 -

Spring Boot配置文件application.properties 相关电子书
学习笔记
网友NO.872381

Spring Boot 编写Servlet、Filter、Listener、Interceptor的方法

前言 在编写过滤器、监听器、拦截器之前我们需要在spring-boot启动的类上加上注解@ServletComponentScan: @SpringBootApplication@ServletComponentScanpublic class MySpringbootApplication { public static void main(String[] args) { SpringApplication.run(MySpringbootApplication.class, args); }} Servlet spring-boot编写过滤器和spring中差不多,直接看代码: @WebServlet(urlPatterns = "/serv")public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { System.out.println("------------doget-------------"); doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) { System.out.println("------------dopost-------------"); }} 其实也就是注解的不同而已: @WebServlet(urlPatterns = "/serv") 过滤器(Filter) 在spring-boot里编写过滤器我们只需要实现javax.servlet.Filter @WebFilter(filterName = "myFil……

网友NO.703418

springboot+Oauth2实现自定义AuthenticationManager和认证path

本人在工作中需要构建这么一个后台框架,基于springboot,登录时认证使用自定义AuthenticationManager;同时支持Oauth2访问指定API接口,认证时的AuthenticationManager和登录规则不同。在研究了源码的基础上参考很多文章,目前基本得以解决。 @Configurationpublic class OAuth2Configuration { @SpringBootApplication @RestController @EnableResourceServer @Configuration @EnableAuthorizationServer protected static class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter implements EnvironmentAware { private static final String ENV_OAUTH = "authentication.oauth."; private static final String PROP_CLIENTID = "clientid"; private static final String PROP_SECRET = "secret"; private static final String PROP_TOKEN_VALIDITY_SECONDS = "tokenValidityInSeconds"; private RelaxedPropertyResolver propertyResolver; @Autowired private DataSource dataSource; @Bean public TokenStore tokenStore() { return new JdbcTokenS……

网友NO.838540

Spring Boot与Docker部署实践

首先需要开启docker远程访问功能,以便可以进行远程操作。 CentOS 6 修改/etc/default/docker文件,重启后生效(service docker restart)。 DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375" CentOS 7 打开/usr/lib/systemd/system/docker.service文件,修改ExecStart这行。 复制代码 代码如下: ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 重启后生效 systemctl daemon-reload systemctl restart docker.service 测试是否生效 curl http://127.0.0.1:2375/info 新建Maven工程 pom.xml配置如下: project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" modelVersion4.0.0/modelVersion groupIdtest.springboot.docker/groupId artifactIddocker-springboot/artifactId version0.0.1-SNAPSHOT/version parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-sta……

网友NO.739294

在Eclipse中部署Spring Boot/Spring Cloud应用到阿里云

Spring Cloud 和 Spring Boot 可以说是当前最流行的微服务开发框架了,在本文中,将向读者介绍如何在 在 Eclipse 中部署 Spring Boot / Spring Cloud 应用到阿里云。 本地开发 无论是编写云端运行的,还是编写本地运行的 Spring Boot 应用程序,代码编写本身并没有特别大的变化,因此本文采用一个极其基础的样例《在 Web 页面打印 HelloWorld 的 Spring Boot 》为例,通过启动内置的 Tomcat 容器,处理 HTTP 请求,在 Web 页面上打印一串“Hello World”的文案。 内嵌的 Tomcat 监听来自根目录的请求 package com.aliyun.toolkit.demo;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloWorldController { @RequestMapping("/") public String sayHello() { return "Alibaba Cloud Toolkit: Hello,World."; }} Spring Boot 的启动类 package com.aliyun.toolkit.demo;import org.sprin……

网友NO.738656

浅谈Spring Boot Web 应用性能优化

默认情况下,Spring Boot Web 应用会装配一些功能组件 Bean。 在大多数 Web 应用场景下,可以选择性地关闭一下自动装配的Spring 组件 Bean,以达到提升性能的目的。 配置项优化 Spring Boot Web 应用加速 完整配置项 management.add-application-context-header = falsespring.mvc.formcontent.putfilter.enabled = falsespring.autoconfigure.exclude = org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,\……

<
1
>

电子书 编程教程 文档 软件 源码 视频

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

版权投诉 / 书籍推广 / 赞助:QQ:520161757