Java SpringBoot高级用法详解

目录
  • 1,IDEA中Lombok作用
    • 创建项目
  • 2.pom.xml说明
    • 2.1 pom.xml标签说明
    • 2.2 依赖的相关说明
    • 2.3 SHA1介绍
      • SpringBoot高级用法
      • YML文件说明
  • 3.需求说明
    • 3.2利用properties文件为属性赋值
  • 总结

1,IDEA中Lombok作用

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

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

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

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

创建项目

依赖的版本 2.4.1、

2.pom.xml说明

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
<!--  该配置表示Maven坐标  -->
<!--  项目的组id  -->
    <groupId>com.jt</groupId>
<!--  项目名称  -->
    <artifactId>springboot_demo1</artifactId>
<!--  项目版本号 -->
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_demo1</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.4.1</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <!--  SpringBoot的启动项   wep  相当于引入MVC框架
                    思想:"开箱即用"!!!
                    说明: 只需要引入jar包,简单的配置即可以使用该功能
                 -->
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!--相当于继承了一个父级-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <!--通过pom标识 是一个父级 -->
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.1</version>
                <configuration>
                    <mainClass>com.jt.SpringbootDemo1Application</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

2.1 pom.xml标签说明

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

根据坐标查找jar包

扩展: 如果项目中依赖第三方jar包文件报错! 如何处理?

问题说明: 有时根据坐标下载jar包文件时,可能由于网络问题,导致jar包下载不完整.

解决方案: 根据第三方的坐标,查找到本地仓库的位置,之后删除 重新下载.

  • 默认条件下 jar包
  • web项目可以打成 war包
  • 如果该项目是父级项目 则写 pom

通过dependencyManagement标签统一定义父级工程,在其中定义了 springBoot项目所有兼容的版本信息.

所以依赖项中不需要添加版本号,也可以正常依赖jar包文件

2.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数据传递有效性原理图.

2.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本质

SpringBoot高级用法

Pro文件说明

  • pro文件语法
  • 数据结构类型:   key=value  特别注意不要有空格.
  • 字符集编码:    程序读取文件时,默认采用ISO-8859-1编码
  • 弊端: 所有的key都必须写完整,不能缩进

YML文件说明

YML文件的语法

  • 数据结构   key-value结构
  • 写法:     key:(空格)value
  • 层级代码结构,注意缩进
  • 字符集  文件读取时,默认采用UTF-8编码 可以写中文

server:

port: 8080

3.需求说明

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

编辑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;
    }
}

3.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;
    }
}

结构

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • springboot中filter的用法详解

    一.在spring的应用中我们存在两种过滤的用法,一种是拦截器.另外一种当然是过滤器.我们这里介绍过滤器在springboot的用法,在springmvc中的用法基本上一样,只是配置上面有点区别. 二.filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开 servlet时处理response.换种说法,filter

  • SpringBoot Admin用法实例讲解

    说明 Spring Boot Admin 是一个管理和监控你的 Spring Boot 应用程序的应用程序. 这些应用程序通过 Spring Boot Admin Client(通过 HTTP)注册或者使用 Spring Cloud(例如 Eureka)发现. UI只是 Spring Boot Actuator 端点上的一个 AngularJs 应用程序. 创建服务 创建spring boot 项目,引入依赖 <dependency> <groupId>de.codecentric

  • SpringBoot @PostConstruct原理用法解析

    前言 本节我们将学习一下@PostConstruct的用法. 概述 @PostContruct是spring框架的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法. /** * 项目启动时,初始化定时器 */ @PostConstruct public void init() { List<Job> jobList = jobDao.selectJobAll(); for (Job job : jobList) { CronTrigger

  • Java SpringBoot Validation用法案例详解

    目录 constraints分类 对象集成constraints示例 SpringBoot集成自动验证 集成maven依赖 验证RequestBody.Form对象参数 验证简单参数 验证指定分组 全局controller验证异常处理 自定义constraints @DateFormat @PhoneNo 使用自定义constraint注解 问题 提到输入参数的基本验证(非空.长度.大小.格式-),在以前我们还是通过手写代码,各种if.else.StringUtils.isEmpty.Colle

  • springBoot的事件机制GenericApplicationListener用法解析

    什么是ApplicationContext? 它是Spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些. ApplicationContext则是应用的容器. Spring把Bean(object)放在容器中,需要用就通过get方法取出来. ApplicationEvent 是个抽象类,里面只有一个构造函数和一个长整型的timestamp. springboot的event的类型: ApplicationStartingEvent ApplicationEnviro

  • springboot2.3 整合mybatis-plus 高级功能及用法详解

    -学习并使用mybatis-plus的一些高级功能的用法例如: AR模式. 乐观锁 .逻辑删除 .自动填充.数据保护等功能 为了方便演示,咱们还是新建一个全新的项目 引入mp依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> &l

  • Java SpringBoot高级用法详解

    目录 1,IDEA中Lombok作用 创建项目 2.pom.xml说明 2.1 pom.xml标签说明 2.2 依赖的相关说明 2.3 SHA1介绍 SpringBoot高级用法 YML文件说明 3.需求说明 3.2利用properties文件为属性赋值 总结 1,IDEA中Lombok作用 数据库: 库 表 字段 对应的值 user表(id,name,age) 实体对象pojo: 用来封装数据库中的数据 User类(id,name,age) 实体对象方法: Get/Set/toString/无

  • Shell编程之变量的高级用法详解

    变量替换 语法 说明 ${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除 ${变量名##匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除 ${变量名%匹配规则} 从变量尾部进行规则匹配,将符合最短的数据删除 ${变量名%%匹配规则} 从变量尾部进行规则匹配,将符合最长的数据删除 ${变量名/旧字符串/新字符串} 变量内容符合就字符串,则第一个旧字符串会被新字符串替换 ${变量名//旧字符串/新字符串} 变量内容符合就字符串,则全部的旧字符串会被新字符串替换 示例 var

  • Java SpringBoot自定义starter详解

    目录 一.什么是SpringBoot starter机制 二.为什么要自定义starter ? 三.什么时候需要创建自定义starter? 四.自定义starter的开发流程(案例:为短信发送功能创建一个starter) 1.细节:命名规范 2.必须引入的依赖 3.编写相关属性类(XxxProperties):例如 SmsProperties.java 4.编写Starter项目的业务功能 5.编写自动配置类AutoConfig 6.编写spring.factories文件加载自动配置类 7.打

  • Java RandomAccessFile的用法详解

    RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件. RandomAccessFile不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和 DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫

  • Java中SimpleDateFormat用法详解

    public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (date -> text).语法分析 (text -> date)和标准化. SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动. 但是,希望用 DateFormat 中的 getTimeInstance. getDateInstance 或 getDateTime

  • Java中DecimalFormat用法详解

    我们经常要将数字进行格式化,比如取2位小数,这是最常见的.Java 提供DecimalFormat类,帮你用最快的速度将数字格式化为你需要的样子.下面是一个例子: importjava.text.DecimalFormat; public class TestNumberFormat{ public static void main(String[]args){ doublepi=3.1415927; //圆周率 //取一位整数 System.out.println(newDecimalForm

  • java.text.DecimalFormat用法详解

    简要 DecimalFormat 的 pattern 都包含着 正负子 pattern ,例如 "#,##0.00;(#,##0.00)": /** * Created by Shuai on 2016/7/11. */ public class Main { public static void main(String[] args) { // 正值 BigDecimal bigDecimal = BigDecimal.valueOf(-12211151515151.541666);

  • Python3网络爬虫中的requests高级用法详解

    本节我们再来了解下 Requests 的一些高级用法,如文件上传,代理设置,Cookies 设置等等. 1. 文件上传 我们知道 Reqeuests 可以模拟提交一些数据,假如有的网站需要我们上传文件,我们同样可以利用它来上传,实现非常简单,实例如下: import requests files = {'file': open('favicon.ico', 'rb')} r = requests.post('http://httpbin.org/post', files=files) print

  • python re模块的高级用法详解

    总结 以上所述是小编给大家介绍的python re模块的高级用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • java Beanutils.copyProperties( )用法详解

    这是一篇开发自辩甩锅稿~~~~ 昨天测试小姐姐将我的一个bug单重开了,emmmm....内心OS:就调整下对象某个属性类型这么简单的操作,我怎么可能会出错呢,一定不是我的锅!!but再怎么抗拒,bug还是要改的,毕竟晚上就要发版本了~~ 老老实实将我前天改的部分跟了一遍,恩,完美,没有任何的缺失~~but本应success的测试数据,接口返还的结果确实是false来着,那还是老老实实debug吧. 一步步跟下来,恩,多么顺畅,就说一定不是我的锅~~诶?不对不对,这里的ID值,为啥是null?传

随机推荐