SpringBoot学习笔记

//写在前面

20210512

为了毕设,找了一门springboot的课程,尽量把有用的东西都记录下来,持续更新至学完。

 

1.SpringBoot概述

1.1目标

了解SpringBoot是什么、有什么作用

1.2小结

(1)SpringBoot是一个可以便捷搭建Spring工程的脚手架,可以帮助开发人员快速搭建大型的Spring项目。

(2)SpringBoot最核心的思想就是“依赖大于配置”,相比Spring而言减少了很多繁琐的配置过程,使得开发人员可以把更多的时间用来想功能怎么实现,业务怎么实现,而不是成天配环境。

 

 

2.SpringBoot入门

2.1目标

能够使用SpringBoot搭建项目

2.2分析

需求:可以在浏览器中访问http://localhost:8080/hello

实现步骤:(助记:贱赖动里侧)

1.创工程(New Projects时候直接选择Maven类型即可,JDK选择自己电脑的版本)

SpringBoot学习笔记_第1张图片

2.添加依赖在pom.xml中(启动类依赖 spring-boot-starter)(springboot之所以能减少配置是因为添加了启动依赖)(只要加了parent剩下的其他依赖不用写版本号,因为这个父依赖已经把那些版本号包含了)

SpringBoot学习笔记_第2张图片

3.创建启

package cn.wzw;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * SpringBoot工程都有的启动引导类,也是工程的入口类
 * 注解为:@SqringBootApplication
 * main函数可以通过psvm这个快捷键实现
 * main函数里面是要run这个application类
 */
@SpringBootApplication
public class Application {
    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }
}

4.创建处器(RestController注解返回的是字符串之类的)(编码顺序:@RestController,因为分析需求需要返回一行字符串 - hello函数 - @GetMapping 因为只是需要读取一下字符串所以选这个注解)

package cn.wzw.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * controller就是处理器的意思,主要编写一些逻辑的代码
 * 注解@RestController相当于@ResponseBody+@Controller
 * 返回的一定是字符串之类的
 */
@RestController
public class HelloController {
    @GetMapping("hello")
    public String hello(){
        return "Hello,SpringBoot!";
    }
}

5.试(在启动类启动SpringBoot项目,在浏览器中输入http://localhost:8080/hello)

SpringBoot学习笔记_第3张图片

其他:

  • groupiId和artificialId被称作坐标,是为了保证项目唯一性而设立的。groupId分为很多段,第一段是域(域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织,cn是中国的意思),第二段是公司名字,artificialId就是项目名称。 比如个人的项目可以叫cn.XXX.project1(其中XXX为姓名缩写之类的)。
  • 依赖需要在pom.xml 文件中加入
   
        
            org.springframework.boot
            spring-boot-starter-web
            2.4.5
        
    
  • 加了父工程依赖之后,自己不用加依赖版本号
  • 因为我把maven的路径给改到了自己专门装软件的一个磁盘,没有放到默认的c盘的.m2文件夹,所以刚开始依赖没有导入。因为是maven依赖没导入,所以要尝试去找maven的问题
  • psvm是idea里写main函数的简化方法。File-Settings-Editor-Live Templates中可以在java目录下面加入类似的简写。
  • http://localhost:8080/hello中的hello是映射路径
  • GET与POST方法的区别
  • SpringBoot学习笔记_第4张图片
  • SpringBoot的Controller分为两类,一类是 @Controller,另一类是@RestController

总结:SpringBoot工程可以通过添加启动器依赖和创建启动引导类来创建web工程 spring-boot-starter-web默认应用服务端口为8080

 

3.Java代码配置

3.1 目标

3.2 分析

需求:使用java代码配置数据库连接池,并在处理器中可以使用

3.3 步骤

  1. 添加依赖
            
                com.alibaba
                druid
                1.2.6
            

     

  2. 创建数据库:在navicat随便创建一个数据库
    jdbc.driverClassName = com.mysql.jdbc.Driver
    jdbc.url = jdbc:mysql://127.0.0.1:3306/exam
    jdbc.username = root
    jdbc.password = 123456

     

  3. 创建数据库连接参数的配置文件jdbc.properties
  4. 创建配置类
  5. 改造处理器类 注入数据源 并使用

3.4 总结

3.5 其他

常用的java注解

  • @Configuration:声明为一个配置类,代替xml文件
  • @Bean:声明在方法上,将方法的返回值加入Bean容器,返回Bean标签
  • @Value:属性注入
  • @PropertySource:指定外部属性文件

引用了新的依赖之后记得重启maven

学到了@Bean那里

4 SpringBoot属性注入方式

4.1 目标

能够使用@ConfigurationProperties实现SpringBoot配置文件的配置项的读取或应用

4.2 分析

需求:将配置文件中的配置项读取到一个对象中

实现:可以使用SpringBoot提供的注解@ConfigurationProperties,该注解可以将SpringBoot的配置文件中的配置读取到一个对象中(默认必须为application.properties或为application.yml)

实现步骤:

  1. 创建配置类JdbcProperties类,并且在类名上添加@ConfigurationProperties注解
    package cn.wzw.config;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    
    /**
     * 配置项类。
     * 作用:从配置文件application中读取配置项
     * prefix的作用:是前缀
     * 配置项类中的类变量名必须与配置前缀之后的配置项名称保持 松散绑定(相同)
     */
    @ConfigurationProperties(prefix = "jdbc")
    public class JdbcProperties {
        private String url;
        private String driverClassName;
        private String username;
        private String password;
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getDriverClassName() {
            return driverClassName;
        }
    
        public void setDriverClassName(String driverClassName) {
            this.driverClassName = driverClassName;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }
    

     

  2. 将Jdbc.properties类修改名称为application.properties类
  3. 将Jdbc.properties对象注入到JdbcConfig
  4. 测试

 

 

4.4小结

  1. 使用@ConfigurationProperties编写配置项类将配置文件中的配置项设置到对象
    @ConfigurationProperties(prefix = "jdbc")
    public class JdbcProperties {
        private String url;
        private String driverClassName;
        private String username;
        private String password;
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getDriverClassName() {
            return driverClassName;
        }
    
        public void setDriverClassName(String driverClassName) {
            this.driverClassName = driverClassName;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }

     

  2. 使用@ConfigurationProperties在方法上使用
        @Bean
        @ConfigurationProperties(prefix = "jdbc")
       public DataSource dataSource() {
            return new DruidDataSource();
        }

     

4.5 其他

  1. shift+F6 改名字

 

 

5 多个yml文件配置

目标:

分析:

yaml与properties配置文件除了展示形式不同之外,其他功能和作用都一样,在项目中原路的读取方式不需要改变。

yml配置文件特征:

树桩层级结构展示配置项

配置项之间有关系的话需要分行空两格

配置项如果有值的话,那么需要在冒号之后再加一个空格

例如application.properties为

jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://127.0.0.1:3306/exam
jdbc.username = root
jdbc.password = 123456

转变为applicaiton.yml为

jdbc:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/exam
  username: root
  password: 123456

 

YAML定义Ain't Markup Language。Yaml是一种简洁的标志性语言,以数据为中心,使用空白、缩进和分行组织数据,从而使数据更加简洁易读。

如果有两种配置文件,都可以读取,要是有同名的,会以properties为准

7 lombok应用

目标:使用lombok的注解实现pojo类的简化

使用SpringBoot整合SSM工程,需要用到数据库的数据

lombok是一个插件工具包;提供了一些注解@Data,@Getter等注解简化实体类的方法

1.在idea中安装lombok插件

2.添加lombok对应的依赖到项目pom.xml中

3.改造数据

8 SpingBoot整合-SpringMVC端口和静态资源

目标:可以修改tomacat端口,访问项目中的静态资源

分析:

  • 修改tomcat端口

 

  • 访问项目中的静态资源

 

9 配置拦截器

目标:可以在spring项目中配置自定义SpringMVC拦截器

分析:

编写拦截器(实现HandlerInterceptor)

编写配置类实现WebMvcConfugurer,在该类中

10 SpringBoot整合-事务连接池

目标:配置SpringBoot自带默认的hikari数据库连接池和使用@Transactional注解进行事务配置

分析:

事务配置

添加事务相关的启动器依赖,mysql相关依赖

编写业务类UserService使用事务注解@Transactional

数据库连接池hik

你可能感兴趣的:(毕业设计,spring,boot,java)