Springboot笔记(spring boot笔记)

  本篇文章为你整理了Springboot笔记(spring boot笔记)的详细内容,包含有springboot笔记尚硅谷 spring boot笔记 springboot2笔记 springboot高级笔记 Springboot笔记,希望能帮助你了解 Springboot笔记。

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-parent /artifactId

   version 2.3.4.RELEASE /version

   /parent

   dependencies

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-web /artifactId

   /dependency

   /dependencies

  

 

 

  3 .创建主程序

  

/**

 

   * 主程序类

   * @SpringBootApplication:一个springboot应用

  @SpringBootApplication

  public class MainApplication {

   public static void main(String[] args) {

   SpringApplication.run(MainApplication.class,args);

  

 

  4.写业务

  

@RestController

 

  public class HelloController {

   @RequestMapping("/hello")

   public String handle01(){

   return "Hello SpringBoot2!";

  

 

  5.运行main,浏览器打开localhost:8080/hello

  6.简化配置

  application.properties

  

server.port=8888

 

  

 

  7.简化部署

  打包方式jar

  把项目打成jar包,直接在目标服务器执行即可

  

 build 

 

   plugins

   plugin

   groupId org.springframework.boot /groupId

   artifactId spring-boot-maven-plugin /artifactId

   /plugin

   /plugins

   /build

  

 

  自动配置原理

  1.依赖管理

  父项目做依赖管理

  

依赖管理

 

   parent

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-parent /artifactId

   version 2.3.4.RELEASE /version

   /parent

  他的父项目

   parent

   groupId org.springframework.boot /groupId

   artifactId spring-boot-dependencies /artifactId

   version 2.3.4.RELEASE /version

   /parent

  

 

  开发导入starter场景启动器

  

1、见到很多 spring-boot-starter-* : *就某种场景

 

  2、只要引入starter,这个场景的所有常规需要的依赖我们都自动引入

  3、SpringBoot所有支持的场景

  https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter

  4、见到的 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。

  5、所有场景启动器最底层的依赖

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter /artifactId

   version 2.3.4.RELEASE /version

   scope compile /scope

   /dependency

  

 

  无需关注版本号,自动版本仲裁

  

1、引入依赖默认都可以不写版本

 

  2、引入非版本仲裁的jar,要写版本号。

  

 

  可以修改版本号

  

1、查看spring-boot-dependencies里面规定当前依赖的版本用的key。

 

  2、在当前项目里面重写配置

   properties

   mysql.version 5.1.43 /mysql.version

   /properties

  

 

  2.自动配置

  自动配好Tomcat

  引入Tomcat依赖

  配置Tomcat

  
无需配置包扫描

  改变扫描路径@SpringBootApplication(scanBasePackages="com.xust")或@ComponentScan 指定扫描路径

  
默认配置最终都是映射到某个类上,如:MultipartProperties

  配置文件的值最终会绑定每个类上,这个类会在容器中创建对象

  
groupId org.springframework.boot /groupId

   artifactId spring-boot-configuration-processor /artifactId

   optional true /optional

   /dependency

   build

   plugins

   plugin

   groupId org.springframework.boot /groupId

   artifactId spring-boot-maven-plugin /artifactId

   configuration

   excludes

   exclude

   groupId org.springframework.boot /groupId

   artifactId spring-boot-configuration-processor /artifactId

   /exclude

   /excludes

   /configuration

   /plugin

   /plugins

   /build

  

 

 

  Web开发

  简单功能分析

  (1)静态资源目录

  将静态资源放在/static,/public,/resources,/META-INF/resources

  访问:当前项目根路径/+静态资源名

  优先级:resources static public

  
原理:静态映射/**

  请求进来,先去找Controller看能不能处理。不能处理的所有请求又去交给静态资源处理器。如果静态资源也找不到则响应404页面

  (2)静态资源访问前缀

  默认无前缀

  application.yaml中配置访问前缀为res,改变默认静态资源路径

  

spring:

 

   mvc:

   static-path-pattern: /res/**

   web:

   resources:

   static-locations: [classpath:/hehe/]

  

 

  欢迎页支持

  静态资源路径下index.html

  可以修改静态资源默认访问路径,但是不能配置访问前缀,否则会导致index.html文件不能被默认访问

  
将图标图片名称改为favicon.ico置于静态资源目录下即可

  配置访问前缀会使该功能失效

  SpringBoot不支持jsp,需要引入第三方模板引擎进行页面渲染

  模板引擎-Thymeleaf

  Thymeleaf的使用

  1.引入starter

  

 dependency 

 

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-thymeleaf /artifactId

   /dependency

  

 

  2.自动配置好了Thymeleaf

  默认前后缀

  将html页面置于resources/templates目录下即可自动渲染

  

public static final String DEFAULT_PREFIX = "classpath:/templates/";

 

  public static final String DEFAULT_SUFFIX = ".html"; //xxx.html

  

 

  3.页面开发

  引入名称空间xmlns:th="http://www.thymeleaf.org"

  

 !DOCTYPE html 

 

   html lang="en" xmlns:th="http://www.thymeleaf.org"

   head

   meta charset="UTF-8"

   title Title /title

   /head

   body

   h1 th:text="${msg}" 哈哈 /h1

   a href="www.test.com" th:href="${link}" 去百度1 /a br

   a href="www.test.com" th:href="@{link}" 去百度2 /a

   /h2

   /body

   /html

  

 

  

@Controller

 

  public class ViewTestController {

   @GetMapping("/xust")

   public String xust(Model model){

   //model中的数据会被放在请求域中,相当于request.setAttribute("a",aa)

   model.addAttribute("msg","你好,xust");

   model.addAttribute("link","http://www.baidu.com");

   return "success.html";

  

 

  构建后台管理系统

  数据源的自动配置-HikariDataSource

  导入jdbc场景

  

 dependency 

 

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-data-jdbc /artifactId

   /dependency

  

 

  数据库驱动(默认8.0.22)

  

 dependency 

 

   groupId mysql /groupId

   artifactId mysql-connector-java /artifactId

   /dependency

  

 

  修改配置项

  application.yaml

  

spring:

 

   datasource:

   url: jdbc:mysql://localhost:3306/db_account

   username: root

   password: xpx24167830

   driver-class-name: com.mysql.cj.jdbc.Driver

  

 

  Test

  

@Slf4j

 

  @SpringBootTest

  class Boot03WebAdminApplicationTests {

   @Autowired

   JdbcTemplate jdbcTemplate;

  
void contextLoads() {

   Long aLong = jdbcTemplate.queryForObject("select count(*) from t_emp", Long.class);

   log.info("记录总数:{}",aLong);

  

 

  Druid数据源

  自定义方式

  

 dependency 

 

   groupId com.alibaba /groupId

   artifactId druid /artifactId

   version 1.1.17 /version

   /dependency

  

 

  整合MyBatis

  pom.xml

  

 !--第三方-- 

 

   dependency

   groupId org.mybatis.spring.boot /groupId

   artifactId mybatis-spring-boot-starter /artifactId

   version 2.2.2 /version

   /dependency

  

 

  application.yaml

  

server:

 

   port: 8888

  spring:

   datasource:

   username: root

   password: xpx24167830

   #?serverTimezone=UTC解决时区的报错

   url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC useUnicode=true characterEncoding=utf-8

   driver-class-name: com.mysql.cj.jdbc.Driver

  mybatis:

   type-aliases-package: com.xust.pojo

   mapper-locations: classpath:mybatis/mapper/*.xml

  

 

  UserMapper.java

  

@Mapper

 

  @Repository

  public interface UserMapper {

   List User queryUserList();

  

 

  UserMapper.xml

  

 mapper namespace="com.xust.mapper.UserMapper" 

 

   select id="queryUserList" resultType="User"

   select * from t_emp

   /select

   /mapper

  

 

  UserController.java

  

@RestController

 

  public class UserController {

   @Autowired

   private UserMapper userMapper;

   @GetMapping("/queryUserList")

   private List User queryUserList(){

   List User userList = userMapper.queryUserList();

   for (User user:userList){

   System.out.println(user);

   return userList;

  

 

  Swagger

  集成Swagger

  1.新建项目

  2.导入依赖

  

 !-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -- 

 

   dependency

   groupId io.springfox /groupId

   artifactId springfox-swagger2 /artifactId

   version 2.9.2 /version

   /dependency

   !-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --

   dependency

   groupId io.springfox /groupId

   artifactId springfox-swagger-ui /artifactId

   version 2.9.2 /version

   /dependency

  

 

  3.写一个最基础的hello工程

  HelloController.java

  

@RestController

 

  public class HelloController {

   @RequestMapping("/hello")

   public String hello(){

   return "hello";

  

 

  SwaggerConfig.java

  

@Configuration

 

  @EnableSwagger2 //开启Swagger

  public class SwaggerConfig {

  

 

  5.测试运行

  我这里运行失败了,原因是idea默认创建时springboot版本较高,最简单的办法是降版本到2.5.6,运行成功

  打开对应网址后缀swagger-ui.html

  配置Swagger

  SwaggerConfig.java

  

@Configuration

 

  @EnableSwagger2 //开启Swagger

  public class SwaggerConfig {

   //配置swagger的Docket的bean实例

   @Bean

   public Docket docket(){

   return new Docket(DocumentationType.SWAGGER_2)

   .apiInfo(apiInfo());

   //配置Swagger信息=apiInfo

   private ApiInfo apiInfo(){

   //作者信息

   Contact contact=new Contact("xpx","https:///xxx/","123@qq.com");

   return new ApiInfo(

   "我的API文档",

   "这是一个测试",

   "1.0",

   "https:///xxx/",

   contact,

   "Apache 2.0",

   "http://www.apache.org/licenses/LICENSE-2.0",

   new ArrayList()

  

 

  Swagger配置扫描接口和开关

  SwaggerConfig.java

  

@Configuration

 

  @EnableSwagger2 //开启Swagger

  public class SwaggerConfig {

   //配置swagger的Docket的bean实例

   @Bean

   public Docket docket(){

   return new Docket(DocumentationType.SWAGGER_2)

   .apiInfo(apiInfo())

   //是否启动Swagger,false表示不启动

   .enable(true)

   .select()

   //RequestHandlerSelectors配置要扫描接口的方式

   //basePackage指定要扫描的包

   //any()扫描全部

   //none()不扫描

   //withClassAnnotation()扫描类上的注解

   //withMethodAnnotation()扫描方法上的注解

   .apis(RequestHandlerSelectors.basePackage("com.xust.swagger.controller"))

   //paths过滤路径

   .paths(PathSelectors.ant("/xust/**"))

   .build();

   //配置Swagger信息=apiInfo

   private ApiInfo apiInfo(){

   //作者信息

   Contact contact=new Contact("xpx","https:///LoginX/","2436846019@qq.com");

   return new ApiInfo(

   "我的API文档",

   "这是一个测试",

   "1.0",

   "https:///LoginX/",

   contact,

   "Apache 2.0",

   "http://www.apache.org/licenses/LICENSE-2.0",

   new ArrayList()

  

 

  配置API文档的分组

  

.groupName("测试分组")

 

  

 

  配置多个分组,多个Docket实例

  

@Configuration

 

  @EnableSwagger2 //开启Swagger

  public class SwaggerConfig {

   @Bean

   public Docket docket1(){

   return new Docket(DocumentationType.SWAGGER_2).groupName("A分组");

   @Bean

   public Docket docket2(){

   return new Docket(DocumentationType.SWAGGER_2).groupName("B分组");

   @Bean

   public Docket docket3(){

   return new Docket(DocumentationType.SWAGGER_2).groupName("C分组");

   //配置swagger的Docket的bean实例

   @Bean

   public Docket docket(){

   return new Docket(DocumentationType.SWAGGER_2)

   .apiInfo(apiInfo())

   .groupName("xpx的分组")

   //是否启动Swagger,false表示不启动

   .enable(true)

   .select()

   //RequestHandlerSelectors配置要扫描接口的方式

   //basePackage指定要扫描的包

   //any()扫描全部

   //none()不扫描

   //withClassAnnotation()扫描类上的注解

   //withMethodAnnotation()扫描方法上的注解

   .apis(RequestHandlerSelectors.basePackage("com.xust.swagger.controller"))

   //paths过滤路径

   .paths(PathSelectors.ant("/xust/**"))

   .build();

   //配置Swagger信息=apiInfo

   private ApiInfo apiInfo(){

   //作者信息

   Contact contact=new Contact("xpx","https:///LoginX/","2436846019@qq.com");

   return new ApiInfo(

   "我的API文档",

   "这是一个测试",

   "1.0",

   "https:///LoginX/",

   contact,

   "Apache 2.0",

   "http://www.apache.org/licenses/LICENSE-2.0",

   new ArrayList()

  

 

  实体类及文档注释配置

  只要在接口中返回值存在实体类,就会被扫描到Swagger中

  User.java

  

@ApiModel("用户实体类")//文档注释

 

  public class User {

   @ApiModelProperty("用户名")//文档注释

   public String username;

   @ApiModelProperty("密码")

   public String password;

  

 

  HelloConfig.java

  

@RestController

 

  public class HelloController {

   @GetMapping("/hello")

   public String hello(){

   return "hello";

   //只要在接口中返回值存在实体类,就会被扫描到Swagger中

   @ApiOperation("注释测试")

   @PostMapping("/user")

   public User user(@ApiParam("用户名") String username){

   return new User();

  

 

  以上就是Springboot笔记(spring boot笔记)的详细内容,想要了解更多 Springboot笔记的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: