spring boot 业务扩展

1.1 属性赋值问题

1.1.1 业务需求

说明: 如果将配置信息,通过代码的形式写死到代码中,这样的话程序的耦合性高,不便扩展.
需求: 能否为对象的属性,动态赋值.

@RestController //保证返回的数据转化为JSON
public class JDBCController {
    
    private String username;    //定义数据库用户名
    private String password;    //定义数据库密码
    
    @RequestMapping("/getMsg")
    public String getMsg() {
        
        this.username = "root";
        this.password = "root";
        return username+"|"+password;
    }
}

1.1.2 @Value方式赋值

1).编辑YML配置文件

    # yml配置文件语法
##  1.key: value   k-v结构使用:号(空格)连接
##  2.YML配置文件有层级关系.
##  3.YML配置文件注意缩进.
##  4.YML文件支持中文.内部编码是utf-8编码
server:
  port: 8090
  
  # 设定项目发布路径  
  servlet:
    context-path: /  
    # /代表缺省值目录  
    
# 在配置文件中添加属性和属性值,为了防止重名发生,则添加前缀区分
jdbc:
  username: root
  password: root

2). 编辑JDBCController实现属性赋值

@RestController //保证返回的数据转化为JSON
public class JDBCController {
    
    //1.需求:利用YML配置文件的信息为属性赋值
    //@Value作用: 从spring容器中找到具体的key,为属性赋值.
    @Value("${jdbc.username}") //spel表达式 spring提供
    private String username;    //定义数据库用户名
    
    @Value("${jdbc.password}")
    private String password;    //定义数据库密码
    
    @RequestMapping("/getMsg")
    public String getMsg() {
        
        this.username = "root";
        this.password = "root";
        return username+"|"+password;
    }
    
    @RequestMapping("/getMsgValue")
    public String getMsgValue() {
        
        return username+"|"+password;
    }
    
}

1.1.3 批量为属性赋值

1.1.3.1 业务需求

有时某些配置可能需要很多的属性信息.如果这时利用@Value的方式赋值.则必然导致代码冗余.可读性差.
解决方案: 采用批量赋值的方式.

 

 

 

1.1.3.2 添加jar包文件

        <!--添加属性注入-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

1.1.3.3 编辑JdbcController2

注意属性的set/get方法

    @RestController
@ConfigurationProperties(prefix = "jdbc")  //定义属性的前缀
public class JDBCController2 {

    //批量为属性赋值时,要求配置文件的属性与类中的属性名称必须一致. 自动的赋值.
    private String username;    //定义数据库用户名
    private String password;    //定义数据库密码
    
    //为属性赋值时,一定会调用对象的set方法.
    
    @RequestMapping("/getMsgPrefix")
    public String getMsgValue() {
        
        return username+"|"+password;
    }
    
    
    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;
    }
    
}

1.2 指定配置文件为属性赋值

1.2.1 业务说明

YML配置文件是SpringBoot程序的核心文件.在其中添加了整合环境的重要的配置.如果有时需要业务数据进行赋值操作时.最好的方式应该采用properties的方式赋值. (通用!!!)

1.2.2 编辑pro配置文件

注意编码的格式:最好改为utf-8

 

 

1.2.3 编辑JDBCController

说明:动态引入pro配置文件

@RestController //保证返回的数据转化为JSON
//properties与spring容器建立关系,指定pro文件之后,进行加载. 默认的加载策略,采用ISO-8859-1编码
//如果其中包含中文,则应该采用utf-8格式编码.
@PropertySource(value = "classpath:/properties/jdbc.properties",encoding = "UTF-8")
public class JDBCController {
    
    //1.需求:利用YML配置文件的信息为属性赋值
    //@Value作用: 从spring容器中找到具体的key,为属性赋值.
    @Value("${jdbc2.username}") //spel表达式 spring提供
    private String username;    //定义数据库用户名
    
    @Value("${jdbc2.password}")
    private String password;    //定义数据库密码
    
    @RequestMapping("/getMsg")
    public String getMsg() {
        
        this.username = "root";
        this.password = "root";
        return username+"|"+password;
    }
    
    @RequestMapping("/getMsgValue")
    public String getMsgValue() {
        
        return username+"|"+password;
    }
    
}

1.4 关于环境部署问题

在yml配置文件中,切换配置环境,其中---为分隔符

# 设置环境的默认值
spring:
  profiles:
    active: test

---
# yml配置文件语法
##  1.key: value   k-v结构使用:号(空格)连接
##  2.YML配置文件有层级关系.
##  3.YML配置文件注意缩进.
##  4.YML文件支持中文.内部编码是utf-8编码

#为环境定义名称
spring:
  profiles: test  
  
server:
  port: 8080
  
  # 设定项目发布路径  
  servlet:
    context-path: /  
    # /代表缺省值目录  
    
# 在配置文件中添加属性和属性值,为了防止重名发生,则添加前缀区分
jdbc:
  username: root
  password: root
  
#实现配置文件的分隔
---
spring:
  profiles: prod  
    
server:
  port: 80
  
  # 设定项目发布路径  
  servlet:
    context-path: /  
    # /代表缺省值目录  
    
# 在配置文件中添加属性和属性值,为了防止重名发生,则添加前缀区分
jdbc:
  username: com.tedu.cn
  password: tarena

此配置中有两个环境,一:test ,二:prod  

1.5 lombok常用注解

 

 

 

 

1.5.4 关于LOMBOK面试题

问题: 通过lombok可以添加set/get/toString等方法.但是需要运行环境中添加lom插件才行.如果将来程序在Linux系统中发布.问:是否需要提前安装lombok插件

A.不需要 B 需要 C 不知道/无所谓

解释: LOM插件在编译期生效. IDE工具将.java文件 编译为.class文件时,lombok插件开始工作. 为.class文件动态拼接get/set/toString等方法.所以 当程序在Linux中运行时. xxxx.jar 项目 (.class)文件. 可以直接运行.和lombok是否安装无关.

1.6 springboot整合mybatis时yml文件中的数据源配置

spring:
  datasource:
    #driver-class-name: com.mysql.jdbc.Driver   注释
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

数据源配置说明:
serverTimezone=GMT%2B8 设定时区 东8区 %2B ~ +
&useUnicode=true&characterEncoding=utf8 设定编码格式
&autoReconnect=true 如果断开链接,是否重连.
&allowMultiQueries=true 是否允许批量操作.

关于配置Mybatis整合关系

 mybatis:
  # 定义别名包
  type-aliases-package: com.jt.demo.pojo
  # 批量导入mapper映射文件
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

 

posted @ 2020-08-01 16:53  wjcbk  阅读(288)  评论(0编辑  收藏  举报