Spring Boot学习

本文介绍了SpringBoot框架的由来及其主要特点,包括简化开发、约定优于配置等,并通过实战演示了快速创建SpringBoot项目的过程,展示了依赖管理和自动配置等功能。

https://spring.io/projects/spring-boot >SpringBoot官方文档

https://www.bootschool.net/ascii >页面生成图形(生成后的图像放在resources文件下)


回顾Spring

Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者:Rod Johnson。
Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。

为了降低Java开发的复杂性,Spring.采用了以下4种关键策略:

  1. 基于POJO的轻量级和最小侵入性编程,所有东西都是bean;
  2. 通过IOC,依赖注入(DI)和面向接口实现松耦合;
  3. 基于切面(AOP)和惯例进行声明式编程;
  4. 通过切面和模版减少样式代码,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.组件添加

  1. @Configuration修饰的类代表注解类,有了这个就不用写bean.xml了
  2. @Bean创建对象@Component表示一个组件,交给Spring来管理@ControllerMVC中的C,控制器,跳转页面)、@Service表明是一个Service类,交给Spring来管理@Repository
  3. @ComponentScan指定包扫描的路径@Import把一个类导入进来(使用的时候需要有@Configuration注解)
  4. @Conditional条件装配:只有满足条件,组件才会被注入(条件注解,做一个判断,放在config里。相当于一个if判断,可以放在类和方法上,判断有没有,有就执行,没有就不执行)

2.原生文件引入

@ImportResource导入静态资源,如:bean.xml

@ImportResource("classpath:beans.xml")

3.配置绑定

  1. @ConfigurationPropertiesJava如何获取Properties配置文件中的内容的三种方式:
    https://blog.youkuaiyun.com/west_three_boy/article/details/72638100
  2. @EnableConfigurationProperties+@ConfigurationProperties
  3. @Component+@ConfigurationProperties

总结:

springboot会加载全部的自动配置类XXXXXAutoConfiguration

每个自动装配类按照条件生效(@ConditionalOnbean/missingBean),默认值都会对应.properties

生效的配置类就会给容器装配很多组件,只要容器中有这些组件,就会提供对应的功能如webmvc

用户可以定制化组件:只需要修改application.properties中对应key的value

最佳实践

  1. 场景依赖:导入启动器
  2. 查看自动配置做了哪些:只需要在对应的开发场景中,引入spring的自动配置即可。看原配置的默认值是否需要修改
  3. 想自定义组件:自己添加注解
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值