飞道的博客

SpringBoot学习笔记

202人阅读  评论(0)

//写在前面

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选择自己电脑的版本)

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

3.创建启


  
  1. package cn.wzw;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. /**
  5. * SpringBoot工程都有的启动引导类,也是工程的入口类
  6. * 注解为:@SqringBootApplication
  7. * main函数可以通过psvm这个快捷键实现
  8. * main函数里面是要run这个application类
  9. */
  10. @SpringBootApplication
  11. public class Application {
  12. public static void main(String[] args){
  13. SpringApplication.run(Application.class,args);
  14. }
  15. }

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


  
  1. package cn.wzw.controller;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. /**
  5. * controller就是处理器的意思,主要编写一些逻辑的代码
  6. * 注解@RestController相当于@ResponseBody+@Controller
  7. * 返回的一定是字符串之类的
  8. */
  9. @RestController
  10. public class HelloController {
  11. @GetMapping("hello")
  12. public String hello(){
  13. return "Hello,SpringBoot!";
  14. }
  15. }

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

其他:

  • groupiId和artificialId被称作坐标,是为了保证项目唯一性而设立的。groupId分为很多段,第一段是域(域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织,cn是中国的意思),第二段是公司名字,artificialId就是项目名称。 比如个人的项目可以叫cn.XXX.project1(其中XXX为姓名缩写之类的)。
  • 依赖需要在pom.xml 文件中加入

  
  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. <version> 2.4. 5</version>
  6. </dependency>
  7. </dependencies>
  • 加了父工程依赖之后,自己不用加依赖版本号
  • 因为我把maven的路径给改到了自己专门装软件的一个磁盘,没有放到默认的c盘的.m2文件夹,所以刚开始依赖没有导入。因为是maven依赖没导入,所以要尝试去找maven的问题
  • psvm是idea里写main函数的简化方法。File-Settings-Editor-Live Templates中可以在java目录下面加入类似的简写。
  • http://localhost:8080/hello中的hello是映射路径
  • GET与POST方法的区别
  • SpringBoot的Controller分为两类,一类是 @Controller,另一类是@RestController

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

 

3.Java代码配置

3.1 目标

3.2 分析

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

3.3 步骤

  1. 添加依赖
    
        
    1. <dependency>
    2. <groupId>com.alibaba </groupId>
    3. <artifactId>druid </artifactId>
    4. <version>1.2.6 </version>
    5. </dependency>

     

  2. 创建数据库:在navicat随便创建一个数据库
    
        
    1. jdbc.driverClassName = com.mysql.jdbc.Driver
    2. jdbc.url = jdbc:mysql://127.0.0.1:3306/exam
    3. jdbc.username = root
    4. 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注解
    
        
    1. package cn.wzw.config;
    2. import org.springframework.boot.context.properties.ConfigurationProperties;
    3. /**
    4. * 配置项类。
    5. * 作用:从配置文件application中读取配置项
    6. * prefix的作用:是前缀
    7. * 配置项类中的类变量名必须与配置前缀之后的配置项名称保持 松散绑定(相同)
    8. */
    9. @ConfigurationProperties(prefix = "jdbc")
    10. public class JdbcProperties {
    11. private String url;
    12. private String driverClassName;
    13. private String username;
    14. private String password;
    15. public String getUrl() {
    16. return url;
    17. }
    18. public void setUrl(String url) {
    19. this.url = url;
    20. }
    21. public String getDriverClassName() {
    22. return driverClassName;
    23. }
    24. public void setDriverClassName(String driverClassName) {
    25. this.driverClassName = driverClassName;
    26. }
    27. public String getUsername() {
    28. return username;
    29. }
    30. public void setUsername(String username) {
    31. this.username = username;
    32. }
    33. public String getPassword() {
    34. return password;
    35. }
    36. public void setPassword(String password) {
    37. this.password = password;
    38. }
    39. }

     

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

 

 

4.4小结

  1. 使用@ConfigurationProperties编写配置项类将配置文件中的配置项设置到对象
    
        
    1. @ConfigurationProperties(prefix = "jdbc")
    2. public class JdbcProperties {
    3. private String url;
    4. private String driverClassName;
    5. private String username;
    6. private String password;
    7. public String getUrl() {
    8. return url;
    9. }
    10. public void setUrl(String url) {
    11. this.url = url;
    12. }
    13. public String getDriverClassName() {
    14. return driverClassName;
    15. }
    16. public void setDriverClassName(String driverClassName) {
    17. this.driverClassName = driverClassName;
    18. }
    19. public String getUsername() {
    20. return username;
    21. }
    22. public void setUsername(String username) {
    23. this.username = username;
    24. }
    25. public String getPassword() {
    26. return password;
    27. }
    28. public void setPassword(String password) {
    29. this.password = password;
    30. }

     

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

     

4.5 其他

  1. shift+F6 改名字

 

 

5 多个yml文件配置

目标:

分析:

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

yml配置文件特征:

树桩层级结构展示配置项

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

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

例如application.properties为


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

转变为applicaiton.yml为


  
  1. jdbc:
  2. driverClassName: com.mysql.jdbc.Driver
  3. url: jdbc: mysql: //127.0.0.1:3306/exam
  4. username: root
  5. 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


转载:https://blog.csdn.net/weixin_42454041/article/details/116717301
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场