• Spring Boot项目属性配置


    接着上面的入门教程,我们来学习下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加入如下依赖:

    1 <dependency>
    2     <groupId>org.springframework.boot</groupId>
    3     <artifactId>spring-boot-configuration-processor</artifactId>
    4     <optional>true</optional>
    5 </dependency>

    MysqlProperties.java代码如下(使用Alt+Insert快捷键生成Getter和Setter方法):
     1 package com.example.demo;
     2 
     3 import org.springframework.boot.context.properties.ConfigurationProperties;
     4 import org.springframework.stereotype.Component;
     5 
     6 /**
     7  * Mysql属性配置
     8  */
     9 @Component
    10 @ConfigurationProperties(prefix = "mysql")
    11 public class MysqlProperties {
    12 
    13     private String jdbcName;
    14 
    15     private String dbUrl;
    16 
    17     private String userName;
    18 
    19     private String password;
    20 
    21     public String getJdbcName() {
    22         return jdbcName;
    23     }
    24 
    25     public void setJdbcName(String jdbcName) {
    26         this.jdbcName = jdbcName;
    27     }
    28 
    29     public String getDbUrl() {
    30         return dbUrl;
    31     }
    32 
    33     public void setDbUrl(String dbUrl) {
    34         this.dbUrl = dbUrl;
    35     }
    36 
    37     public String getUserName() {
    38         return userName;
    39     }
    40 
    41     public void setUserName(String userName) {
    42         this.userName = userName;
    43     }
    44 
    45     public String getPassword() {
    46         return password;
    47     }
    48 
    49     public void setPassword(String password) {
    50         this.password = password;
    51     }
    52 }

     application.properties添加的属性如下:

    1 mysql.jdbcName=com.mysql.jdbc.Driver
    2 mysql.dbUrl=jdbc:mysql://localhost:3306/db_boot
    3 mysql.userName=root
    4 mysql.password=root

    HelloWordController.java的最终代码为:

     1 package com.example.demo;
     2 
     3 import org.springframework.beans.factory.annotation.Value;
     4 import org.springframework.stereotype.Controller;
     5 import org.springframework.web.bind.annotation.RequestMapping;
     6 import org.springframework.web.bind.annotation.ResponseBody;
     7 
     8 import javax.annotation.Resource;
     9 
    10 
    11 /**
    12  * Created  on 2017-9-3.
    13  */
    14 @Controller
    15 public class HelloWorldController {
    16 
    17     @Value("${hellWorld}")
    18     private String helloWorld;
    19 
    20     @Resource
    21     private MysqlProperties mysqlPropertie;
    22 
    23     @RequestMapping("/hello")
    24     @ResponseBody
    25     public String say(){
    26         return  helloWorld;
    27     }
    28 
    29     @RequestMapping("/showJdbc")
    30     @ResponseBody
    31     public String showJdbc(){
    32         return "mysql.jdbcName" + mysqlPropertie.getJdbcName() +"<br/>"
    33                 + "mysql.dbUrl" + mysqlPropertie.getDbUrl() +"<br/>"
    34                 + "mysql.userName" + mysqlPropertie.getUserName() +"<br/>"
    35                 + "mysql.password" + mysqlPropertie.getPassword() +"<br/>";
    36 
    37     }
    38 
    39 
    40 }

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

     转载请附上原文链接:http://www.cnblogs.com/stm32stm32/p/7469663.html

  • 相关阅读:
    数据--第53课
    数据--第52课
    数据--第51课
    标准模板库中的优先队列(priority_queue)
    进程的定义
    进程的基本概念
    循环不变式
    插入排序
    模板声明
    标准模板库中的队列(queue)
  • 原文地址:https://www.cnblogs.com/stm32stm32/p/7469663.html
Copyright © 2020-2023  润新知