首页 > 其他分享 >SpringBoot2

SpringBoot2

时间:2023-12-13 11:26:14浏览次数:35  
标签:配置 boot bean SpringBoot2 组件 注解 class

概述

SpringBoot是整合Spring技术栈的一站式框架。SpringBoot是简化Spring技术栈的快速开发脚手架。

优点

  • 创建独立Spring应用
  • 内嵌web服务器
  • 自动starter依赖,简化构建配置
  • 自动配置Spring以及第三方功能
  • 提供生产级别的监控、健康检查及外部化配置
  • 无代码生成、无需编写XML

入门

@RestController注解包含@ResponseBody和@Controller注解。

在导入spring-boot-maven-plugin遇到Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found的错误时,可以通过添加版本号解决,添加版本号是很多找不到文件时解决方案。

SpringBoot不必打包成war包,打包成jar包即可,只需导入spring-boot-maven-plugin,springboot会将所需的依赖一同打包入jar包。使用Maven的Lifecycle中package打包即可。

@SpringBootApplication注解指明启动程序,只需执行main方法即可启动项目。

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);
    }
}

自动配置原理

父项目做依赖管理,里面指定了很多依赖的版本号。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.4.RELEASE</version>
</parent>

starter场景启动器:spring-boot-starter-*是官方的,而*-spring-boot-starter是第三方。

springboot为我们自动配好Tomcat、自动配好SpringMVC、自动配好Web常见功能,如:字符编码问题、默认的包结构、各种配置拥有默认值、按需加载所有自动配置项。

主程序所在包及其下面的子包都会被默认进行组件扫描。

配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的。

配置类本身也是组件,可以通过getBean方法获取。

常用注解

@Configuration中的属性proxyBeanMethods的值默认为true,是新特性,用于代理bean的方法。true的时候保证获取的对象是单实例的,false则会保留代理对象,可以获取新的对象。启用代理,就是先创建bean,每次用的时候直接拿。如果类组件之间没有依赖关系则使用false,若有则使用true。

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.atguigu.boot")
public class MainApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
        
        Pet tom01 = run.getBean("tom", Pet.class);
        Pet tom02 = run.getBean("tom", Pet.class);
        System.out.println("组件:"+(tom01 == tom02));//在true模式下,两者是相同的

        //配置类本身也是组件
        MyConfig bean = run.getBean(MyConfig.class);
        System.out.println(bean);

        //如果@Configuration(proxyBeanMethods = true)代理对象调用方法。SpringBoot总会检查这个组件是否在容器中有。
        //保持组件单实例,使用配置类调用bean
        User user = bean.user01();
        User user1 = bean.user01();
        System.out.println(user == user1);
    }
}

@Import注解给容器中使用无参构造创建出填入类型的组件:@Import({User.class, DBHelper.class})

@Conditional注解实现条件装配,若满足Conditional指定的条件,则进行组件注入:@ConditionalOnMissingBean(name = "tom")。

@ImportResource注解用于将xml的组件导入的配置类中:@ImportResource("classpath:beans.xml")。

配置绑定

@ConfigurationProperties读取properties文件中的内容,并将其封装到JavaBean中,只需填写前缀接口,属性会自动对应类中的属性。

@Component
@ConfigurationProperties(prefix="mycar")
public class Car{
  ......
}

在配置类中使用@EnableConfigurationProperties(Car.class)注解开启Car属性配绑定功能并将Car组件自动注册到容器中,这样可以少写@Component注解。

自动配置原理

  1. 引导加载自动配置类。
  2. 按需开启自动配置项。
  3. 修改默认配置,以用户配置的优先。

开发步骤

  1. 引入场景依赖
  2. 查看哪些部分进行了自动化配置,在application.propreties中添加debug=true可以查看。
  3. 配置是否需要修改,参照文档修改配置项,自定义加入或替换组件。

开发工具

  1. lombok
  2. devtools,ctrl+F9更新。
  3. Spring Initializr。

开发

yaml中字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义。

欢迎页面有两种方式:1、静态资源下index.html;2、Controller能够处理/index请求。

只需将图片命名为favicon.ico即可作为网站的图标。

Rest风格如果使用客户端工具,如PostMan直接发送Put、Delete方式请求,无需使用Filter。

静态资源访问

只要静态资源放在类(resources)路径下:/static/public/resources/META-INF/resources,就可以通过当前项目根路径/ + 静态资源名访问。

原来是静态映射/**,请求进来优先找Controller是否能处理,不能处理的所有请求都交给静态资源猫处理器。

静态资源访问默认无前缀,可以通过static-path-pattern修改前缀。

常用注解

矩阵变量写法:/cars/sell;low=34;brand=byd,audi,yd

注解 作用
@PathVariable 路径变量
@RequestHeader 获取请求头
@RequestParam 获取请求参数
@CookieValue 获取cookie值
@RequestBody 获取请求体[POST]
@RequestAttribute 获取request域属性
@MatrixVariable 矩阵变量

标签:配置,boot,bean,SpringBoot2,组件,注解,class
From: https://www.cnblogs.com/xiqin-huang/p/17898650.html

相关文章

  • 【转载】Springboot2.x接收参数的多种方式
    参考https://blog.csdn.net/suki_rong/article/details/80445880https://zhuanlan.zhihu.com/p/34597391https://juejin.cn/post/6922469125033820168环境环境版本操作windows10JDK11Springboot2.3.12.RELEASE正文packagecom.example.demo.co......
  • 手摸手入门Springboot2.7集成Swagger2.9.2
    环境介绍技术栈springboot+mybatis-plus+mysql+oracle+Swagger软件版本mysql8IDEAIntelliJIDEA2022.2.1JDK1.8SpringBoot2.7.13mybatis-plus3.5.3.2REST软件架构风格REST即表述性状态传递(英文:RepresentationalStateTransfer,简称REST,中文:表示层状态转移)是RoyFielding博士在20......
  • 014 springboot2.7.10与swagger3.0.0出现的版本冲突问题,以及解决办法
    springboot2.7.10集成Swagger3.0.0过程中出现的错误提示翻译过来:解决办法:1.网上的解决办法1:在配置文件中添加以下内容spring:mvc:#解决springboot2.7.10与swagger3版本冲突的问题pathmatch:matching-strategy:ant_path_matcher 结果报错,springboot......
  • 2023版SpringBoot2 仿B站高性能前端+后端项目开发全流程
    2023版SpringBoot2仿B站高性能前端+后端项目51xuebc+尾缀SpringBoot2仿B站高性能前端+后端项目:打造高效、稳定、可扩展的应用在当今的互联网时期,网站的性能、稳定性和可扩展性成为了权衡一个项目胜利与否的关键要素。本文将引见如何运用SpringBoot2构建一个仿B站的高性能前......
  • SpringBoot2 仿B站的文章示例代码简介
    SpringBoot2仿B站的文章示例代码简介SpringBoot2是一个基于Java的开源框架,它可以帮助开发者快速构建应用程序。本文将介绍一个仿B站的文章示例代码,展示如何使用SpringBoot2构建一个简单的文章发布和展示平台。项目结构项目结构如下:java复制代码├──pom.xml......
  • 分享SpringBoot2 仿B站高性能前端+后端项目
    点击下崽:分享SpringBoot2仿B站高性能前端+后端项目  提取码:cj2sSpringBoot2仿B站高性能前端+后端项目在当今的互联网时期,视频分享平台如B站等备受欢送。它们的胜利很大水平上归功于其高性能的前端和后端技术。在本文中,我们将讨论如何运用SpringBoot2框架和相关技术来创立一个相......
  • SpringBoot2和SpringBoot3有什么区别
    SpringBoot2和SpringBoot3有什么区别1.最低环境的区别Java版本:SpringBoot2的最低版本要求为Java8,支持Java9;而SpringBoot3决定使用Java17作为最低版本,并支持Java19。SpringFramework版本:SpringBoot2基于SpringFramework5开发;而SpringBoot3构建基于SpringFramework6之上。......
  • springboot2 @Mapper注解问题
    @MapperpublicinterfaceDeptMapper{   DeptgetById(Integerid);}问:这段代码是把这个接口注入到spring的bean容器当中去了,但是spring的bean容器不是存的实例化对象吗?答:在Spring框架中,将一个类(或接口)注入到Spring的容器中,即将其声明为一个Bean。这样,Spring容器会负......
  • springboot2 springboot 的引导类
    SpringBoot工程提供引导类用来启动程序,SpringBoot工程启动后创建并初始化Spring容器 packagecom.itheima;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.context......
  • SpringBoot2,Druid数据源常用配置
    spring:datasource:druid:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/mybatis?serverTimeZone=UTCusername:rootpassword:rootmax-wait:2000#获取连接的最大等待时间initial-size:5......