SpringBoot高级用法

1,IDEA中Lombok作用

SpringBoot高级用法_第1张图片

数据库: 库 表 字段 对应的值 user表(id,name,age)

实体对象pojo: 用来封装数据库中的数据 User类(id,name,age)

实体对象方法: Get/Set/toString/无参构造/有参构造/equals/hashcode

lombok作用: 自动生成上述的方法.

  1. 创建项目

SpringBoot高级用法_第2张图片

依赖的版本 2.4.1、

  1. pom.xml说明


    4.0.0


    com.jt

    springboot_demo1

    0.0.1-SNAPSHOT
    springboot_demo1
    Demo project for Spring Boot

    
        1.8
        UTF-8
        UTF-8
        2.4.1
    

    
        
            org.springframework.boot
            
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                
                pom
                import
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.4.1
                
                    com.jt.SpringbootDemo1Application
                
                
                    
                        repackage
                        
                            repackage
                        
                    
                
            
        
    

3.1 pom.xml标签说明

说明: 该坐标在本地仓库中是唯一标识符.是当前项目打包/被依赖的唯一 路径.

根据坐标查找jar包

扩展: 如果项目中依赖第三方jar包文件报错! 如何处理?
问题说明: 有时根据坐标下载jar包文件时,可能由于网络问题,导致jar包 下载不完整.
解决方案: 根据第三方的坐标,查找到本地仓库的位置,之后删除 重新下 载.

·  默认条件下 jar包

·  web项目可以打成 war包

·  如果该项目是父级项目 则写 pom

通过dependencyManagement标签统一定义父级工程,在其中定义了 springBoot项目所有兼容的版本信息.
所以依赖项中不需要添加版本号,也可以正常依赖jar包文件

3.2 依赖的相关说明

思想: “开箱即用” 是springBoot设计的核心 越来越简单!!!
什么是启动项: SpringBoot为整合第三方框架,写了启动项的jar包文件, 其中官方已经将所有的配置信息/需要依赖的jar包文件提前测试并且定义.

说明: maven中的jar包是有依赖的传递性
例如: A项目依赖B.jar包, B.jar依赖C.jar. 在项目中,只需要添加B.jar. 则B/C.jar都会自动添加.
实际应用: 如图web.jar包中依赖了很多其它的第三方jar包文件.

mavenjar包查询网址: https://mvnrepository.com/

本地仓库文件说明:

1. 当maven开始解析项目的POM.xml文件时,根据依赖的坐标,找到指定的 jar包文件.之后添加该依赖.

2. 之后扫描当前文件中的 xxx.pom文件.

3. 扫描pom.xml文件中的依赖信息dependency

4. 根据dependency的坐标 重复执行上述的操作.直到所有的依赖都添加完 成.

需求: 网络数据传输,一般都需要进行加密处理.maven中采用SHA1数字签 的加密算法,保证数据传递的有效性!!!
说明: maven数据传递有效性原理图.

SpringBoot高级用法_第3张图片

3.3 SHA1介绍

SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函 数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理 标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列 值通常的呈现形式为**40个十六进制数**。

关键字: 数字证书.

问题1: 常见hashcode值 有多少位16进制数组成??? 8位

问题2: 8位16进制数,有多少种排列组合? 2^32种

00000000-FFFFFFFF

问题3: 相同数据进行hash(算法相同),问题: 值是否相同? 必定相同

问题4: 不同数据进行hash(算法相同),问题: 值是否相同? 可能相同 hash碰撞

问题5: 一个数据1kb, 一个数据ITB 问: hash计算的速度谁快? “一样快” hash本质

  1. SpringBoot高级用法

Pro文件说明

# 1.pro文件语法

# 数据结构类型:   key=value  特别注意不要有空格.

# 字符集编码:    程序读取文件时,默认采用ISO-8859-1编码

# 弊端: 所有的key都必须写完整,不能缩进

YML文件说明

# YML文件的语法

# 1.数据结构   key-value结构

# 2.写法:     key:(空格)value

# 3.层级代码结构,注意缩进

# 4.字符集  文件读取时,默认采用UTF-8编码 可以写中文

server:

  port: 8080

4.1需求说明

说明: 有时将数据写死,不方便后续扩展,需要为属性动态赋值.
解决方案: 有些数据是后台特有的.一般可以将数据写到配置文件中,之后 为属性动态赋值

编辑YML

#YML文件的语法
#1,数据结构  key-value结构
#2,写法:    key:(空格)value
#3,层及代码结构,注意缩进
#4,字符集 文件读取时,默认采取UTF-8编码 可以写中文
# 规则: 命名时最好指定前缀.
server:
  port: 8080
  # 指定业务的key
mysql:
  Username: root|
  Password: root||

 启动类

package com.jt;

//import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//import org.springframework.web.bind.annotation.RequestMapping;

@SpringBootApplication
public class SpringbootDemo1Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemo1Application.class, args);
    }

    }

 动态为属性赋值

package com.jt.contraller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 说明:
 *  1.将该类交给Spring容器管理
 *  2.SpringMVC负责调用该对象接收用户的请求.
 *  3.将业务处理之后的结果,为页面返回JSON数据.
 *  @ResponseBody作用: 将数据转化为JSON串
 */
@RestController
public class JDBCController {
    //${key} Spring提供的springel表达式 简称为:spel表达式
    //语法: 从spring容器内部获取key,动态为属性赋值.
    @Value("${mysql.username}")
    String username;    // = "root|";
    @Value("${mysql.password}")
    String password;    // = "root";

    @RequestMapping("/getMsg")
    public String getMsg() {
        return "你好数据库:" + username + password;
    }
}

4.2利用properties文件为属性赋值

YML文件是SpringBoot的核心配置文件,一般主要用来整合其它第三方框架.属于系统配置文件.如果将大量的业务数据写到系统配置文件中. 耦合性高. 所以将业务数据最好放到pro文件中.

配置 pro 文件

#默认ISO-8859-1 中文必定乱码
mysql.username2=mysql数据库
mysql.password2=你猜猜

为属性赋值

package com.jt.contraller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 说明:
 *  1.将该类交给Spring容器管理
 *  2.SpringMVC负责调用该对象接收用户的请求.
 *  3.将业务处理之后的结果,为页面返回JSON数据.
 *  @ResponseBody作用: 将数据转化为JSON串
 *
 *  propertySource:  value属性指定路径
 *                   encoding属性指定配置文件编码格式
 */
@RestController
@PropertySource(value="classpath:/mysql.properties",encoding = "UTF-8")
public class JDBCContraller {
    /**
     * 难点: 如何将pro文件交给Spring容器管理????
     * 解决方案: @PropertySource("xxxxxx/xxx.properties") 指定配置文件交给Spring
     *          容器管理
     */
    @Value("${mysql.username2}")
    private String username2;
    @Value("${mysql.password2")
    private String password2;

    @RequestMapping("/getMsg2")
    public String getMsg2(){

        return "你好数据库:"+ username2 +password2;
    }
}

结构

SpringBoot高级用法_第4张图片

 

你可能感兴趣的:(spring,boot,java)