Java SpringBoot高级用法详解
作者:辰星,陨落 发布时间:2021-07-03 18:27:09
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;
}
}
结构
来源:https://blog.csdn.net/qq_60509834/article/details/120422060


猜你喜欢
- 首先我将贴出几种实现圆角边框的dmeo程序效果图:方式一:使用shape元素填充背景,设置圆角/带弧度的角1、首先在 \res\drawab
- Flutter 键值存储数据库键值存储是开发中十分常见的需求,在Flutter开发中,一般使用 shared_preferences 插件来
- 基本结构我们先来看一段最基本的代码,分析这段代码在RxJava中是如何实现的。Observable.OnSubscribe<Strin
- 混淆studio 使用Proguard进行混淆,其是一个压缩、优化和混淆java字节码文件的一个工具。功能:Shrinking(压缩)、Op
- package com.wanmei.meishu;import java.io.FileInputStream;import java.i
- 本文实例为大家分享了Java实现FTP上传与下载的具体代码,供大家参考,具体内容如下JAVA操作FTP服务器,只需要创建一个FTPClien
- 增加了用于处理MyBatis的两个bean:SqlSessionFactoryBean、MapperFactoryBean1、注册SqlSe
- 1.所有流程的起点是从拨号后按下拨号键开始,此步的代码在/android sourcecode/packages/Contacts/src/
- 思路分析:要逆序遍历某个列表,首先要获得一个ListIterator对象,利用for()循环,以ListIterator类的hasNext(
- 还是我们自定View的那几个步骤:1、自定义View的属性2、在View的构造方法中获得我们自定义的属性[ 3、重写onMesure ]4、
- 第一步:项目中资源配置文件夹(resources文件夹)下先新增测试环境application-dev.yml和application-pr
- 摘要:在spring boot中 MVC这部分也有默认自动配置,也就是说我们不用做任何配置,那么也是OK的,这个配置类就是 WebMvcAu
- 在C#中,当引用类型需要转换的时候,经常会用到关键字is、as以及显式强转。本篇来体验这三者的用法。先来梳理.NET引用类型转换的"
- minio 注册成windows 服务的工具开发using System;using System.Collections.Generic;
- 这里合并用到了一个itext的包。使用maven直接导入依赖即可。<dependency> <g
- 由于最近项目忙,博客一直没有时间更新,今天有点时间就连续更新两篇吧,过过瘾。这篇图片拖拽缩放也是我在项目中用到的,今天整理一下,将源码奉献给
- 数字可以标志货币、百分比、积分和电话号码等,就货币而言,在不同的国家会以不同的格式来定义,本实例将接收用户输入的数字,然后在控制台中输出其货
- 目录栈溢出(虚拟机栈和本地方法栈)产生原因解决思路堆溢出产生原因解决思路方法区和运行时常量池溢出产生原因解决思路本机直接内存溢出产生原因解决
- springboot用以进行web项目开发的便捷性,本文不再赘述,主要是想将工作中基于springboot与gradle的多模块项目的构建经
- 前言为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar、zip和7z,本文将介绍在C#中如何对这几种类型的文件