SpringBoot(一)()

  本篇文章为你整理了SpringBoot(一)()的详细内容,包含有 SpringBoot(一),希望能帮助你了解 SpringBoot(一)。

  1.1 使用Spring Initializr 的 Web页面创建项目

  创建网址:https://start.spring.io/

  1.2 使用IDEA创建

  省略;

  2、第一个hello

  2.1 代码

  在 xxxApplication(项目名+Application 自动生成) 的启动类的同级下创建一个controller包,并创建一个控制类

  

@Controller

 

  public class SpringBootPrimerController {

   * @author : huayu

   * @date : 10/10/2022

   * @param : [msg]

   * @return : java.lang.String

   * @description : 接收前端请求helloSbt,返回响应字符串

   @RequestMapping("/helloSbt")

   @ResponseBody

   public String hello(@RequestParam(value = "msg") String msg){

   return String.format("Hello %s",msg);

  

 

  application.properties 指定服务端口

  

# 服务端口

 

  server.port=8080 # 默认时8080

  

 

  2.2 测试

  2.3 新增的注解

  

@RestController //组合注解,相当于 @Controller + @ResponseBody

 

  @GetMapping("/helloSbt")//相当于 @RequestMapping( method = {RequestMethod.GET} )

  

 

  3、打 jar 包运行

  3.1 打包

  3.1.1 pom.xml

  

 !-- 指定打包方式,默认方式是jar,还可以是war -- 

 

   packaging jar /packaging

  

 

  3.1.2 点击 maven 的 package

  3.2 运行jar 包

  cmd 到 项目jar包的目录下

  java -jar 项目的 jar包

  运行结果
 

  3.3 jar 包运行时 指定 参数

  3.3.1 java -jar 项目jar包名 --key=value

  3.3.2 java -jar -Dkey=value 项目jar包名

  4、启动器

  

 !-- starter 启动器:SpringBoot 框架将各个场景单独抽离出来,做成一个个启动器 -- 

 

   !-- 一旦项目中添加了对应的启动器,自动将对应启动器中多有的依赖导入到项目中,直接进行添加配置开发即可,无需手动添加依赖 --

   !-- 实际开发中,使用什么功能,就直接添加对应的启动器 --

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-web /artifactId

   /dependency

  

 

  5、版本控制器 版本仲裁中心:spring-boot-dependencies

  5.1 版本控制器

  

 !-- 为什么SpringBoot 项目添加依赖有的不需要指定版本(比如fastjson,添加必须指定版本号) -- 

 

   !-- 原因:SpringBoot 框架提供了一个版本控制器(又叫:版本仲裁中心:spring-boot-dependencies) 定义了Springboot的依赖版本 --

   !-- 好处:开发人员添加依赖不需要知道版本号,且不需要自己单独维护项目中的各个版本依赖,有防止版本之间的冲突 --

  

 

  5.2 找到版本控制器

  1、点击 pom.xml中的启动器依赖

  2.点击 spring-boot-starter-web 中的依赖 spring-boot-starters

  3.点击 spring-boot-starters 中的依赖 spring-boot-parent

  4.点击 spring-boot-parent 中的依赖 spring-boot-dependencies

  5、在 spring-boot-dependencies 中可以看到 springboot对一些依赖的版本进行了版本控制,和冲突处理

  6、SpringBoot应用的maven 插件

  

 !--

 

   SpringBoot应用的maven 插件,可以将当前SpringBoot 项目直接打包成一个可以执行的jar包,区别与普通jar包(里面没有源码),不能被依赖(比如fastjson依赖jar等)

   即:可以直接通过java -jar 项目指定jar包 命令快速启动项目

   plugin

   groupId org.springframework.boot /groupId

   artifactId spring-boot-maven-plugin /artifactId

   /plugin

  

 

  7、SpringBootApplication 注解详情

  此注解,就是SpringBoot应用的核心启动类;

  7.0 @SpringBootApplication 注解层级理解:

  

@SpringBootConfiguration: springboot的配置

 

   @Configuration: spring配置类

   @Component: 说明也是一个spring的组件

  @EnableAutoConfiguration: 自动配置

   @AutoConfigurationPackage: 自动配置包

   @Import({Registrar.class}): 导入自动配置包注册 导入著启动类同包及其子内中的所有组件

   @Import({AutoConfigurationImportSelector.class}): 导入自动配置导入选择器

   List String configurations = this.getCandidateConfigurations(annotationMetadata, attributes);//获取所有的配置

  @ComponentScan(excludeFilters = { : //按条件剔除一部分组件

   @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),

   @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

  

 

  7.1 @SpringBootConfiguration 注解

  标注的类就是SpringBoot的核心配置类,是SpringBoot的专属注解,实际上跟 @Configuration 注解一致(等同于以前的核心配置文件),在SpringBoot应用启动时,会自动加载;

  @SpringBootConfiguration 实际上跟 @Configuration 注解一致;

  7.2 @EnableAutoConfiguration 注解

  开启自动配置注解,以前都是手动创建xml核心配置文件,文件中增加核心配置,现在都交给SpringBoot框架自动配置;

  7.2.1 子注解 1 @AutoConfigurationPackage 子注解

  开启自动配置包,实际上就是开启spring的自动扫描功能;

  7.2.1.1 子注解 1 的子注解 @Import(AutoConfigurationPackages.Registrar.class)

  @Import(AutoConfigurationPackages.Registrar.class)将springBoot核心启动类所在的父包及子包中所有的组件,自动添加到容器中

  找到 springBoot核心启动类所在的父包 加载的位置

  1、点击进入 @Import(AutoConfigurationPackages.Registrar.class)

  2、点击 Evalute Expression

  3、执行Evalute

  可以看出是将springBoot核心启动类所在的父包及子包中所有的组件,自动添加到容器中

  7.2.2 子注解 2 @Import({EnableAutoConfigurationImportSelector.class})

  开启自动配置将springboot框架下MET-INF/spring/spring.factories资源文件中,属性值 org.springframework.boot.autoconfigure.EnableAutoConfiguration 指定的96个自动配置类,导入到容器中,实现自动配置,省去开发人员手动添加组件到容器中,减少开发的工作量,重心都放在核心业务开发中,不是配置上;

  96个自动配置类

  1、进入 @Import(EnableAutoConfigurationImportSelector.class)

  2、再进入 AutoConfigurationImportSelector

  3、跳到 getCandidateConfigurations 方法

  可以看到96个configuration 应该在 META-INF/spring.factories中

  4、我找到 META-INF/spring.factories

  5、在 spring.factories 找到 96个 configuration

  7.3 @ComponentScan 注解

  指定组件扫描,相当于spring核心配置xml文件中 context:component-scan /context:component-scan 作用;

  可以指定一个自定义的包路径(或者多个),执行组件扫描;

  注意:如果核心启动类上,增加此注解,会导致默认的自动配置包失败,以指定的为准,实际应用时,要避免此种情况出现;

  这里是按条件剔除一部分组件;
 

  8、banner

  在 resources 下 创建文件 banner.txt ,网上复制图案;

  banner图网址:https://www.bootschool.net/ascii

  以上就是SpringBoot(一)()的详细内容,想要了解更多 SpringBoot(一)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: