Spring Boot项目属性配置

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Spring Boot项目属性配置

1、配置项目内置属性


属性配置主要是在application.properties文件里配置的(编写时有自动提示)这里我们将server的端口变为8888,路径加上HelloWorld:



在DeomApplication.java的页面时点击运行按钮,打开浏览器输入:http://localhost:8888/HelloWorld/hello


 

此时,控制台的输出信息也可以看到端口变成8888了:



之前的url已无效:



更改后的URL有效:



2、配置自定义属性


同样也是在application.properties文件编写,内容如下:


 

接着在HelloWorldController.java中使用@Value注解将自定义属性注入,这样可以直接使用自定义属性了:


 

运行项目,输入:http://localhost:8888/HelloWorld/hello,浏览器将显示如下结果:



3、ConfigurationProperties 配置


新建一个com.example.properties包,再新建一个MysqlProperties.java类,经测试运行会出错,无法找到该Bean,错误如下:


 

百度后找到了原因:


SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!

如果Application类所在的包为:io.github.gefangshuai.app,则只会扫描io.github.gefangshuai.app包及其所有子包,如果service或dao所在包不在io.github.gefangshuai.app及其子包下,则不会被扫描!


于是将MysqlProperties.java类移动了com.example.demo包下,也就是Application类所在的包,就没报bean找不到的错误了。


 

MysqlProperties.java用到了2个重要的注解:


1、@Component把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>


2、@ConfigurationProperties(prefix = "mysql"):将配置类注入到spring容器中,这样可以使用配置类,这里使用了前缀。


编写完成,IDEA会提示改属性有问题,原因是spring-boot-configuration-processor.jar包没有引入,在pom.xml加入如下依赖:


 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-configuration-processor</artifactId>
     <optional>true</optional>
 </dependency>


MysqlProperties.java代码如下(使用Alt+Insert快捷键生成Getter和Setter方法):


 package com.example.demo;
  import org.springframework.boot.context.properties.ConfigurationProperties;
  import org.springframework.stereotype.Component;
  /**
 * Mysql属性配置
   */
 @Component
 @ConfigurationProperties(prefix = "mysql")
 public class MysqlProperties {
     private String jdbcName;
     private String dbUrl;
     private String userName;
     private String password;
     public String getJdbcName() {
         return jdbcName;
     }
     public void setJdbcName(String jdbcName) {
         this.jdbcName = jdbcName;
     }
     public String getDbUrl() {
         return dbUrl;
     }
     public void setDbUrl(String dbUrl) {
         this.dbUrl = dbUrl;
     }
     public String getUserName() {
         return userName;
    }
     public void setUserName(String userName) {
         this.userName = userName;
     }
     public String getPassword() {
         return password;
     }
     public void setPassword(String password) {
         this.password = password;
     }
 }

 

application.properties添加的属性如下:


1mysql.jdbcName=com.mysql.jdbc.Driver

2mysql.dbUrl=jdbc:mysql://localhost:3306/db_boot

3mysql.userName=root

4 mysql.password=root


HelloWordController.java的最终代码为:


 package com.example.demo;
  import org.springframework.beans.factory.annotation.Value;
  import org.springframework.stereotype.Controller;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.ResponseBody;
 import javax.annotation.Resource;
 /**
  * Created  on 2017-9-3.
  */
 @Controller
 public class HelloWorldController {
     @Value("${hellWorld}")
     private String helloWorld;
     @Resource
     private MysqlProperties mysqlPropertie;
     @RequestMapping("/hello")
     @ResponseBody
     public String say(){
         return  helloWorld;
     }
     @RequestMapping("/showJdbc")
     @ResponseBody
     public String showJdbc(){
         return "mysql.jdbcName" + mysqlPropertie.getJdbcName() +"<br/>"
                 + "mysql.dbUrl" + mysqlPropertie.getDbUrl() +"<br/>"
                 + "mysql.userName" + mysqlPropertie.getUserName() +"<br/>"
                 + "mysql.password" + mysqlPropertie.getPassword() +"<br/>";
     }
 }


运行项目,浏览器输入:http://localhost:8888/showJdbc,正确结果如下:


 

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
XML Java 应用服务中间件
SpringBoot项目打war包流程
本文介绍了将Spring Boot项目改造为WAR包并部署到外部Tomcat服务器的步骤。主要内容包括:1) 修改pom.xml中的打包方式为WAR;2) 排除Spring Boot内置的Tomcat依赖;3) 添加Servlet API依赖;4) 改造启动类以支持WAR部署;5) 打包和部署。通过这些步骤,可以轻松地将Spring Boot应用转换为适合外部Tomcat服务器的WAR包。
82 64
SpringBoot项目打war包流程
|
27天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
170 73
|
2天前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
67 17
Spring Boot 两种部署到服务器的方式
|
4天前
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
53 36
|
2天前
|
监控 Java 数据库连接
Spring c3p0配置详解
在Spring项目中配置C3P0数据源,可以显著提高数据库连接的效率和应用程序的性能。通过合理的配置和优化,可以充分发挥C3P0的优势,满足不同应用场景的需求。希望本文的详解和示例代码能为开发者提供清晰的指导,帮助实现高效的数据库连接管理。
25 10
|
27天前
|
Java Spring
【Spring配置相关】启动类为Current File,如何更改
问题场景:当我们切换类的界面的时候,重新启动的按钮是灰色的,不能使用,并且只有一个Current File 项目,下面介绍两种方法来解决这个问题。
|
27天前
|
存储 JSON 前端开发
【Spring项目】表白墙,留言板项目的实现
本文主要介绍了表白墙项目的实现,包含前端和后端代码,以及测试
|
27天前
|
JSON 前端开发 Java
|
27天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
27天前
|
Java Spring
【Spring配置】创建yml文件和properties或yml文件没有绿叶
本文主要针对,一个项目中怎么创建yml和properties两种不同文件,进行配置,和启动类没有绿叶标识进行解决。