SpringBoot
https://spring.io/projects/spring-boot >SpringBoot官方文档
https://www.bootschool.net/ascii >页面生成图形(生成后的图像放在resources文件下)
回顾Spring
Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者:Rod Johnson。
Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。
为了降低Java开发的复杂性,Spring.采用了以下4种关键策略:
- 基于POJO的轻量级和最小侵入性编程,所有东西都是bean;
- 通过IOC,依赖注入(DI)和面向接口实现松耦合;
- 基于切面(AOP)和惯例进行声明式编程;
- 通过切面和模版减少样式代码,RedisTemplate,xxxTemplate;
什么是SpringBoot?
SSM就是Spring-SpringMVC-Mybatis。SpringBoot内置了SpringMVC。SpringBoot可以每个模块单独使用,不影响整体。
什么是SpringBoot?就是一个javaweb的开发框架,和Springmvc类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置,you can “just run”,能迅速的开发web应用,几行代码开发一个http接口。
简单来说就是Spring Boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架。
Spring Boot出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态足够完善,Spring Boot已经当之无愧成为Java领域最热门的技术。
Spring Boot的主要优点:
- 为所有Spring开发者更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
Spring Boot的主要特征:
- 创建独立的 Spring 应用程序
- 直接嵌入 Tomcat、Jetty 或 Undertow(已经内置好Tomcat,不用搭建。无需部署 WAR 文件)
- 提供一些可选择的 ‘starter’ dependencies 简化你的 build configuration。
- 还可以自动配置一些 Spring 和第三方库的 jar 包或依赖。
- 提供生产就绪功能,例如指标、健康检查和外部化配置
- 完全无需代码生成,无需 XML 配置
官方文档页面创建springboot项目
https://start.spring.io/

生成后解压
快速创建springboot项目


可以看到已经生成了一个绿叶application.properties 和 一个pom.xml文件

测试web application

@RestController
public class IndexController {
@RequestMapping("/")
public String HelloWorld(){
return "Helloworld";
}
}
在使用mvc的时候,使用的是@Controller和@ResponseBody
- @Controller是跳转页面
- @ResponseBody是显示返回消息
现在想使用@Controller和@ResponseBody的功能来完成跳转和返回消息的话,使用@RestController就可以了

启动Application
@SpringBootApplication
public class Springboot01HelloworldApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot01HelloworldApplication.class, args);
}
}
成功启动

页面显示
运行成功

springboot的特点
依赖管理
它主要是依赖一个父项目,主要是管理项目的资源过滤及插件。
parent声明了版本号,所以其他的依赖可以不用输入版本号。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
</parent>
点击spring-boot-starter-parent查看源码:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.3</version>
</parent>
这里才是真正管理SpringBoot应用里面所有依赖版本的地方,SpringBoot的版本控制中心。
@Target({ElementType.TYPE})作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
@Retention(RetentionPolicy.RUNTIME) 说明这种类型的注解会被保留到哪个阶段 - 源代码,class,jvm
@Documented: 表明被修饰的注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的。
@Inherited: 被修饰的注解可以被子类所继承,成为子类中的注解
开发导入starter场景启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-xxx:就是spring-boot的场景启动器
spring-boot-starter-web:帮我们导入了web模块正常运行所依赖的组件;
Springboot将所有的功能场景都抽取出来,做成一个个的starter(启动器),只需要在项目中引入这些starter即可,所有相关的依赖都会导入进来,我们要用什么功能就导入什么样的场景启动器即可;我们未来也可以自己自定义starter;
官方文档:(支持的场景)
https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
自动装配
- 自动配好Tomcat
- 自动配好SpringMVC
- 自动配好Web常见功能,如:字符编码问题
- 默认的包结构
- 各种配置拥有默认值
- 按需加载所以自动配置项
容器功能
https://blog.youkuaiyun.com/LLcwh/article/details/114881171 >SpringBoot注解
1.组件添加
@Configuration修饰的类代表注解类,有了这个就不用写bean.xml了@Bean创建对象、@Component表示一个组件,交给Spring来管理、@ControllerMVC中的C,控制器,跳转页面)、@Service表明是一个Service类,交给Spring来管理、@Repository@ComponentScan指定包扫描的路径、@Import把一个类导入进来(使用的时候需要有@Configuration注解)@Conditional条件装配:只有满足条件,组件才会被注入(条件注解,做一个判断,放在config里。相当于一个if判断,可以放在类和方法上,判断有没有,有就执行,没有就不执行)
2.原生文件引入
@ImportResource导入静态资源,如:bean.xml
@ImportResource("classpath:beans.xml")
3.配置绑定
- @ConfigurationPropertiesJava如何获取Properties配置文件中的内容的三种方式:
https://blog.youkuaiyun.com/west_three_boy/article/details/72638100 - @EnableConfigurationProperties+@ConfigurationProperties
- @Component+@ConfigurationProperties
总结:
springboot会加载全部的自动配置类XXXXXAutoConfiguration
每个自动装配类按照条件生效(@ConditionalOnbean/missingBean),默认值都会对应.properties
生效的配置类就会给容器装配很多组件,只要容器中有这些组件,就会提供对应的功能如webmvc
用户可以定制化组件:只需要修改application.properties中对应key的value
最佳实践
- 场景依赖:导入启动器
- 查看自动配置做了哪些:只需要在对应的开发场景中,引入spring的自动配置即可。看原配置的默认值是否需要修改
- 想自定义组件:自己添加注解
本文介绍了SpringBoot框架的由来及其主要特点,包括简化开发、约定优于配置等,并通过实战演示了快速创建SpringBoot项目的过程,展示了依赖管理和自动配置等功能。
1467

被折叠的 条评论
为什么被折叠?



