springboot学习
文章目录
一:springboot概述
1:springboot概念
SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。 2014 年 4 月,Spring Boot 1.0.0 发布。Spring的顶级项目之一(https://spring.io)。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rEIYW2he-1656668769024)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\1654527921670.png)]
2:spring缺点
- <1>配置繁琐
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但它要求的回报也不少。
- <2>依赖繁琐
项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。
3:springboot特点
<1>自动配置
Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是SpringBoot自动完成的。
<2>起步依赖
起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
<3>辅助功能
提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
4:重点
Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式
二:配置文件信息
1:application.properties
server.port=808
person.name=radan
person.age=20
:2:application.yml
person:
name: radan
age: 20
address: lanzhou
server:
port: 8000
3:yaml文件规则
基本规则:
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
使用#表示注释
字符串可以不用引号标注
4:yml文件数据结构
对象:键值对的集合(简称 “映射或字典”)
键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔
数组:一组按序排列的值(简称 “序列或列表”)
数组前加有 “-” 符号,符号与值之间需用空格分隔
纯量(scalars):单个的、不可再分的值
5:yml值的单双引号的区别
字符串默认不用加上单引号或者双引号;
- “”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi- ‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lis
6:读取配置文件的顺序
- application.properties>application.yml>application.yaml
三:profile配置方式
1:模拟springboot开发环境
-
application-dev.properties/yml
开发环境 -
application-test.properties/yml
测试环境 -
application-pro.properties/yml
生产环境
2:profile激活方式
- <1>通过application.yml文件来配置项目具体的开发环境
spring:
profiles:
active: dev
- <2>在
VM options
指定:-Dspring.profiles.active=xxx
- (3)命令行参数
java –jar xxx.jar --spring.profiles.active=xxx
#用来划分yml文件区域
server:
port: 8081
spring:
config:
activate:
on-profile: dev
---
server:
port: 8082
spring:
config:
activate:
on-profile: test
---
server:
port: 8083
spring:
config:
activate:
on-profile: pro
---
spring:
profiles:
active: test具体指定具体的环境
3:内置配置加载顺序
Springboot程序启动时,会从以下位置加载配置文件:
file:./config/:当前项目下的/config目录下
file:./ :当前项目的根目录
classpath:/config/:classpath的/config目录
classpath:/ :classpath的根目录(之前我们用的就是这种
4:项目外部配置加载顺序
将配置文件和jar包放在同一级的目录下的时候会被自动读取。
在target文件夹下创建一个config目录放上配置文件。(这种会优先读取)
四:快速构建springboot
1:基于maven的的快速构建
2:基于springinitializr的构建
五: springboot项目打jar流程
1:步骤
第一步:打开maven-点击Lifecycle中的package
第二步:打包成功后会在控制台显示相应的信息(如图)
第三步:打包结束后会在该模块下创建对应的target目录
第四步:在电脑的具体路劲下找到target目录下的jar,运行并检查是否正常
打开idea终端(命令行都可以)----tab键可以自动补全
cd .\springboot_initializr\target#进入到target目录下
java -jar .\springboot_initializr-0.0.1-SNAPSHOT.jar
#运行springbootjar包
如图springboot已启动起来了–端口我在这设定的8000
六:SprinBoot整合junit
1:junit依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
:2:创建一个UserService
package com.yjr.userservice;import org.springframework.stereotype.Service;
@Service
public class UserService {
public void add(){ System.out.println("add...");
}
}
3:创建一个测试类
test下的文件夹要和引导类的文件夹路径一致;不然就得这样写@SpringBootTest(classes=SpringbootCompineApplication.class)–加入引导类
注意:子组件都是动态加载,在当前主程序的子目录去找,例如controller
层都是在注册的子目录去创建。(这里问题得注意)
测试结果
七:SpringBoot整合mybatis
1:配制数据源
spring.datasource.url =jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10
server.servlet.encoding.charset=UTF-8
2:加入mybatis和mysql驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
3:代码编写
创建实体类
package com.yjr.springboot1902.bean;
public class Demo {
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
编写service层
package com.yjr.springboot1902.service;
import com.yjr.springboot1902.bean.Demo;
import com.yjr.springboot1902.mapper.DemoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class DemoService {
@Autowired
private DemoMapper demoMapper;
public List<Demo> likeName(String name){
return demoMapper.likeName(name);
}
}
编写controller层
package com.yjr.springboot1902.controller;
import com.yjr.springboot1902.bean.Demo;
import com.yjr.springboot1902.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class DemoController {
@Autowired
private DemoService demoService;
@RequestMapping("/demo")
public String demo(){
List<Demo> list= demoService.likeName("zhangsan");
return list.toString();
}
}