1、什么是springboot

  springboot属于spring的一个子项目,可以说是基于spring,主要是为了简化配置而诞生的一个解决方案框架,它可以利用引入starter而引入一组starter,从而简化了坐标的引入,同时简化配置使我们能更快速的专注单体程序(微服务)本身的开发。

2、springboot和spring及springCloud什么关系

  简单点可以说 springboot基于spring,而springCloud属于微服务治理,springCloud则又是基于springboot

3、初识springboot案例

  请参考 关于文中 :关于SpringBoot数据源的引入及第三方组件使用

4、springBoot自动配置类流程

  springboot在做自动配置的时候,它会扫描classpath下面所有的jar,从jar中加载到它的自动配置类,然后把这些自动配置类以bean的形式注入到Ioc容器之中,然后通过yml 属性配置文件进行属性注入。

5、属性注入(使用到的依赖 参考下文引入的相关依赖)

<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.2.0.Final</version>
</dependency>

5.1) 属性校验需要使用到校验器(依赖包)
5.2) 需要在对应的类上增加 @Validated 属性上则科室使用 @NotNull、@Max、 @Min()、@NotEmpty 等等
5.3) 如果是(如:把B类作为A类的属性)内部类,或者外部类。则需要在属性上增加增加 @Valid ,并在内部属性、或者外部类 增加对应条控制 @NotNull、@Max、 @Min()、@NotEmpty 等等
5.4) 从配置文件yaml中属性绑定可以使用@ConfigurationProperties(jiac.name) 用于类上或者 @Value(“${jiac.age}”) 用于属性上,需要注意的是 @Value 不能用于从配置文件yaml中绑定复杂的数据类型

6、关于yaml中profile的用法

6.1)可以在yaml中使用 spring.peofiles.activ=test 启用

6.2)可以在主方法入口处通过参数配置 如 -Dspring.profiles.active=pro , -Dacme.enabled=false(用于覆盖配置文件中的属性)

7、springboot自动配置大体流程

7.1)springboot在做自动配置的时候,它会扫描classpath下面所有的jar,从jar中加载到它的自动配置类,然后把这些自动配置类以bean的形式注入到Ioc容器之中。然后我们开发人员在开发程序的时候 想使用哪个配置类,就可以在yaml 中进行相关的属性配置,就可以是直接使用某个配置类等等。


7.2)关于注解的说明
7.2.1) @SpringBootConfiguration 把启动类作为配置类
7.2.2) @EnableAutoConfiguration --开启自动配置类类
 7.2.2.1) @AutoConfigurationPackage --自动配置包
 7.2.2.2) @Import(AutoConfigurationImportSelector.class) --引入自动配置类选择器(根据引入的starter 通过@import筛选出对应的配置类,创建对应的bean,并注册到Ioc容器之中)

8、关于SpringBoot数据源的引入及第三方组件使用

8.1 使用数据源(DataSource)
8.2 使用数据库链接驱动(mysql)
8.3 使用第三方数据源组件
8.4 使用日志组件

如引入如下坐标即可使用(具体参见坐标注释说明):

         <!--springboot依赖的坐标--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--数据源坐标--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--mysql坐标--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--指定数据源类型,如未引入 则默认使用HikariDataSource--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.9</version></dependency><!--日志坐标--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.15</version></dependency><!--用于yaml属性配置时 提示--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>2.7.2</version></dependency><!--用于省略getter setter 方法,简化代码,带需要在实体类上标注@Data注解 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version></dependency><!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator  校验器--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.2.0.Final</version></dependency>

9 检验将属性填充至配置类

 9.1)编写主启动类
 9.2)编写配置类(如果不使用第三组件的数据源则可省略该配置类)
 9.3)编写普通的controller
 9.4) 编写yml属性配置文件
 9.5) 以Debug启动测试程序访问测试地址http://localhost:8080/test(请在controller类中打一个断点,也可忽而略,主要为了验证属性被注入成功)

package cn.tx.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @ClassName SpringApplication* @Description TODO* @Author jiac* @Date 2022/8/7 18:54* @Version 1.0**/@SpringBootApplication
public class SpringApplications {public static void main(String[] args) {SpringApplication.run(SpringApplications.class,args);}
}
package cn.tx.boot.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @ClassName DataSourceConfig* @Description TODO* @Author jiac* @Date 2022/8/7 19:46* @Version 1.0**/@Configuration
public class DataSourceConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource") //进行第三方组件绑定 将yml属性注入public DruidDataSource dataSource(){return  new DruidDataSource();}
}
package cn.tx.boot.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.sql.DataSource;/*** @ClassName HelloController* @Description TODO* @Author jiac* @Date 2022/8/7 18:54* @Version 1.0**/@RestController
public class HelloController {@Autowired  //自动装配  或者通过构造方法注入private DataSource dataSource;@RequestMapping("test")public  String hello(){System.out.println(dataSource);return "ok";}
}
#格式一定需要注意,同一层级一定需要对齐,否则测试会报错
spring:datasource:url: jdbc:mysql://localhost:3306/tx?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTCdriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456
#com.zaxxer.hikari.HikariDataSource  为默认数据源
#type: com.zaxxer.hikari.HikariDataSourcetype: com.alibaba.druid.pool.DruidDataSourceinitialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000min-evictable-idle-time-millis: 300000validation-query: SELECT 1 FROM DUAL

10springboot整合IdbcTemplate测试

 10.1)整个IdbcTemplate简单点理解就是对数据源坐标、连接数据库坐标引入 至pom文件并在yml属性配置文件进行配置
 10.2)整合JdbcTemplate进行数据库测试(由于前面驱动包均已准备就绪,此处只需要将JdbcTemplate注入使用即可,如下:)
   访问 http://localhost:8080/jdbctemp

package cn.tx.boot.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;/*** @ClassName * @Description TODO* @Author jiac* @Date 2022/8/7 23:30* @Version 1.0**/@RestController
public class JdbcTempController {// @Autowired  //自动装配  或者通过构造方法注入private JdbcTemplate jdbcTemplate;public JdbcTempController(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}@RequestMapping("jdbctemp")public   List<Map<String, Object>> query(){List<Map<String, Object>> maps = jdbcTemplate.queryForList("select * from t_user");return maps;}
}

访问如下:

11springboot整合Mybatis测试(使用DruidDataSource,测试单表)

 10.1)springboot 整合mybatis的核心分为5步:
1、导入驱动包
2、建立实体类(因为使用了@Data注解 则可省略Setter和Getter方法)
3、建立接口mapper 将该接口加入容器(@mapper) 并编写对应的增删改查
4、编写DruidDataSource 配置类
5、编写controller 进行测试 (因为测试所以忽略了Service层) ,浏览器访问

      <!--springboot整合mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency>
package cn.tx.boot.model;
import lombok.Data;
import java.util.Date;@Data
public class Person {private  int pid;private  String pname;private  String addr;private  int gender;private Date birth;
}
package cn.tx.boot.mapper;import cn.tx.boot.model.Person;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import java.util.List;@Mapper
public interface PersonMapper {@Select("select  * from person a where a.pid=#{pid}")public Person selectById(int pid);@Select("select * from person")public List<Person> selectAll();@Options(useGeneratedKeys = true,keyProperty = "pid")@Insert("insert into person(pid,pname,addr,gender,birth) values(#{pid},#{pname},#{addr},#{gender},#{birth})")public void insert(Person p);
}
package cn.tx.boot.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @ClassName DataSourceConfig* @Description TODO* @Author jiac* @Date 2022/8/28 22:46* @Version 1.0**/@Configuration
public class DataSourceConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource") //进行第三方组件绑定 将yml属性注入public DruidDataSource dataSource(){return  new DruidDataSource();}
}
package cn.tx.boot.controller;import cn.tx.boot.mapper.PersonMapper;
import cn.tx.boot.model.Person;
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;/*** @ClassName MybatisController* @Description TODO* @Author jiac* @Date 2022/8/28 22:33* @Version 1.0**/@RestController
public class MybatisController {@Autowiredprivate PersonMapper personMapper;@RequestMapping("selectById")public Person selectById(){return personMapper.selectById(1);}@RequestMapping("selectAll")public List<Person> selectAll(){return personMapper.selectAll();}@RequestMapping("insert")public void insert(){Person person=new Person();person.setPname("学java");personMapper.insert(person);}
}

。。。。。。。。。。。。。。。学习更新待续。

注:(学习记录是为了更好的留下印象,便于后续查看,也是希望在这个过程中能更好的了解这一部分知识,如有错误之处,请即时指出,请大家相关讨论交流)

什么是springboot相关推荐

  1. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  2. Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器

    Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...

  3. SpringBoot部署脚本,拿走即用!

    一个可以直接拿来使用的shell脚本,适用于springboot项目 #!/bin/bash # 这里可替换为你自己的执行程序,其他代码无需更改,绝对路径相对路径均可. # 若使用jenkins等工具 ...

  4. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  5. springboot整合swagger2之最佳实践

    来源:https://blog.lqdev.cn/2018/07/21/springboot/chapter-ten/ Swagger是一款RESTful接口的文档在线自动生成.功能测试功能框架. 一 ...

  6. SpringBoot中实现quartz定时任务

    Quartz整合到SpringBoot(持久化到数据库) 背景 最近完成了一个小的后台管理系统的权限部分,想着要扩充点东西,并且刚好就完成了一个自动疫情填报系统,但是使用的定时任务是静态的,非常不利于 ...

  7. Springboot 利用AOP编程实现切面日志

    前言 踏入Springboot这个坑,你就别想再跳出来.这个自动配置确实是非常地舒服,帮助我们减少了很多的工作.使得编写业务代码的时间占比相对更大.那么这里就讲一下面向切面的日志收集.笔者使用lomb ...

  8. 【Springboot】日志

    springBoot日志 1.目前市面上的日志框架: 日志门面 (日志的抽象层):                JCL(Jakarta Commons Logging)                ...

  9. 【springboot】配置

    配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的: •application.properties •application.yml 配置文件的作用:修改SpringBoot自 ...

  10. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

最新文章

  1. 自研DevOps实践
  2. linux 删除小于、大于固定大小的文件
  3. 对python乱序字符串检查算法研究
  4. [树套树] 网络管理
  5. java基本特性_Java面试总结之Java基础
  6. [react] react中的setState缺点是什么呢?
  7. Qt文档阅读笔记-Qt工作笔记-QTableWidget::selectedItems()官方解析与实例(如何进行多选)
  8. bzoj1951 [Sdoi2010]古代猪文 lucas+CRT+exgcd
  9. iOS 11更新第6个开发者测试版,变化最大的竟然是App Store标识
  10. 「非推广」为什么我说本是设计师专属的『数位板』,也是程序猿+科研狗的开会神器?
  11. 四元数-Quaterion
  12. 深入理解JS对象和原型链
  13. 前端实现序列帧_最简单的序列帧动画canvas插件
  14. quartus联合仿真步骤
  15. 矢量绘图工具 Ipe
  16. 天行健---宇宙的生与死
  17. 关于勒索病毒 Ransom:Win32.WannaCrypt 解决方案的最后一次说明
  18. 【英语语法入门】第41讲 原形不定式(2)感官动词
  19. 北斗卫星重要信息汇总
  20. Security:osquery 介绍

热门文章

  1. WIN11打不开虚拟机? 一招教你解决
  2. 操作系统进程调度算法(FCFS、SJF、高响应比)
  3. 元宇宙退潮,人工智能起飞,大厂 Al 新赛点在哪?
  4. 详解5G的六大关键技术
  5. 半导体物理第7版复习笔记
  6. 基于SSM的电影网站设计与实现
  7. 迷宫问题算法设计与实现
  8. win10搭建ftp服务器实现局域网文件互传
  9. 搭建Git服务器及本机克隆提交
  10. 12个Material Design风格控件的使用