【自用】springBoot 1

我哭了,终于进spingBoot了

0208springboot

1.springboot框架解决什么问题

embedded 嵌入

“用户配置文件”是Profile

falling back 后退

yml 大概取消了xml的开闭语法

添加链接描述

Group Id 与 Artifact Id

添加链接描述

json databind 的作用

Streaming流处理模块(jackson-core):定义底层处理流的API:JsonPaser和JsonGenerator等,并包含特定于json的实现
Annotations标准注解模块(jackson-annotations):包含标准的Jackson注解
Databind数据绑定模块(jackson-databind):在streaming包上实现数据绑定(和对象序列化)支持;它依赖于上面的两个模块,也是Jackson的高层API(如ObjectMapper)所在的模块

ssm框架的搭建,需要通过dispatcherServlet来加载springmvc.xml文件,创建子容器;

​ 需要通过Listener加载spring.xml,创建父容器;

整合druid时,添加druid.jar;添加dao.xml,注册druid对象。

整合mybaits时,添加mybatis.jar;mybatis-spring.jar;添加dao.xml,注册mybatis核心对象。

整合pageHelper时,添加pagehelper.jar.注册PageInterceptor对象。

整合jedis时,添加jedis.jar,commones-pool2.jar,注册JedisPool对象。

。。。

一个完整ssm框架搭建完成后,非常多得xml文件,注册了各个组件的核心对象;后续如果需要集成其他新的组件,需要再次创建新的xml文件,注册组件相关的bean对象进入父子容器;

多次整合ssm框架,本质步骤是完全相同的。

springboot框架:此框架中预先提供了各个组件需要的配置文件,配置文件不是以xml形式存在,而是以类的形式存在。达到开箱即用的效果,专注于业务的开发,不再专注于框架的整合搭建。

学习路线:ssm–>springboot–>springCloud–>alibabaCloud

​ -->springSession.springSecurity.

ClasspathXMLApplicationContext:加载xml格式的配置文件 ,创建容器;

AnnotationConfigApplicationContext:加载类格式的配置文件,创建容器;

springboot框架的版本选择,不要选择最新;选择springCloud兼容的版本。目前与sprngCloud兼容性最好的2.3.3-2.3.5

2.创建springboot项目环境

  • 手工创建boot项目(建议使用)
1.创建java工程的maven项目
2.在pom文件中添加springboot父工程;spring-boot-starter-parent
3.添加web开发启动器,spring-boot-web-starter
4.创建springboot的主启动类
  • 通过官方的项目引导器,要求必须联网

引导器网站:https://start.spring.io/

  • idea集成了引导器

  • 自己创建一个springboot项目骨架(建议使用)

3.认识springboot项目结构

src/main/resources/static:放置静态资源(html),前端可以直接访问;

src/main/resources/templates:放置视图模板资源(jsp,html),此目录下的资源受保护(前端无法访问,只能在服务端器访问该目录,由服务器主动把该目录下的资源发送客户端)

src/main/resources/application.properties:springboot项目的主配置文件,这个配置文件支持三个格式,该配置文件名称必须是application开头。在该配置文件中为springboot提供的预配置文件进行数据支持。

4.认识pom文件

4.1.父工程

springboot项目父工程:spring-boot-starter-parent

指定了jdk默认版本;
指定了maven-resource-plugin插件的编码格式;
指定了maven-resource-plugin插件对src/main/resources目录下的application*.yml.yaml.properties文件的识别。

spring-boot-starter-parent的父工程:spring-boot-dependencies

对整个java开发体系中可能用到的依赖组件进行版本的统一管理。

正确的认识父工程,并不是必须的。

4.2.starter启动器

  • spring官方提供的启动器:springboot开发者主动集成的其他组件技术

    比如:spring-boot-starter-web;spring-boot-starter-test;spring-boot-starter-data-redis…

  • 第三方组件提供的启动器:没有被springboot开发者主动集成的组件,由组件开发者主动提供启动器向springboot中集成。

    比如:mybatis-spring-boot-starter;druid-spring-boot-starter

启动器的概念:把某个组件集成到spring容器需要使用的jar包和对象进行了整合,启动器本质上是一个pom文件。

​ jar包与配置类的整合。

以spring-boot-starter-web启动器来说明:

此启动器引入如下jar包:
	spring-web;spring-webmvc;spring核心包;
	spring-boot-starter-json启动器jar包,这个json启动器中又引入如下jar包:
		jackson-databind;jasncon-core;jackson-annotation
	spring-boot-starter-tomcat启动器jar包,这个tomcat启动器又引入如下jar包:
    	tomcat-core;
    spring-boot-starter启动器jar包,该启动器又如下:
    	spring-boot-autoconfigure:此jar包至关重要,只要有这个jar包,当前项目就是springboot项目
    		这个jar包中提供了各个组件的预配置类(Springmvc,Jedis,文件上传,aop,DataSource)
    	spring-boot-starter-logging

以mybatis-spring-boot-starter启动器来说明:

引入mybtis,mbyatis-spring,spring-jdbc,spring-tx,mybatis-spring-boot-autoconfiguration;

mybatis-spring-boot-autoconfigurationjar包中有配置类注册SqLSEssionFactory对象。

4.3.spring-boot-maven-plugin插件




   org.springframework.boot
   spring-boot-maven-plugin

5.复习类配置文件

@Configuration:声明配置类,相关创建了xml

@ComponentScan:启动包扫描,可以指定扫描范围

@PropertySource:加载properties资源配置文件;

@Import:导入其他类配置文件

6.认识springboot启动类

candidate 候选人

Condition 条件

一些注解的说明

只能在类上面用

注解的声明周期 RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;

应该是生成文档用的

通俗的解释:

1、在类继承关系中,子类会继承父类使用的注解中被@Inherited修饰的注解
2、在接口继承关系中,子接口不会继承父接口中的任何注解,不管父接口中使用的注解有没有被@Inherited修饰
3、类实现接口时,不会继承任何接口中定义的注解

【自用】springBoot 1_第1张图片

使用SpringBootApplication来声明启动类,主配置类
  • SpringApplication.run(Application.class, args);
    
     ConfigurableApplicationContext context = new AnnotationConfigServletWebServerApplicationContext();
     context.setConfig(App.class);//指定主配置类
     refreshContext(context);//加载主配置类,初始化容器
     this.createWebServer();//创建tomcat实例对象,启动tomcat服务器
    
  • @SpringBootApplication注解,该注解是一个复合注解
    
    @SpringBootConfiguration:该注解是@Configuration注解的子注解,表示当前类是一个配置类;
    @EnableAutoConfiguration:该注解是自动配置注解
    	@AutoConfigurationPackage:自动配置包扫描范围
    		 AutoConfigurationPackages.register(主配置的包名作为包扫描范围)
    	@Import({AutoConfigurationImportSelector.class}):导入工程中jar包里面的预配置类
    		AutoConfigurationImportSelector是配置类选择器对象,去所有jar包中的META-INF/spring.factories进行读取,在该文件中读取key=EnableAutoConfiguration的值。
    		
    @ComponentScan:开启包扫描,但未指定包的扫描范围。
    
    AutoConfigurationImportSelector配置类选择器对象中代码:
    //META-INF/spring.factories读取数据,Map> map;map.get("EnableAutoConfiguation")
    List configurations = this.getCandidateConfigurations(annotationMetadata, attributes);
    //对所有预配置类按照@ConditionOnXXXX等条件注解进行筛选。
    configurations = this.getConfigurationClassFilter().filter(configurations);
    

总结:

SpringApplication类的run方法负责创建容器,加载主配置类(导入了预配置类),启动tomcat服务器;

在加载主配置类的时候,启用包扫描;自动把主配置类的包名注册为包扫描范围;自动去全局检索spring.factories文件,查找预配置类并筛选后进行Import导入主配置类。

7.认识配置文件

springboot主配置文件格式:properties或yml或yaml。

配置文件中的数据,会被加载到XXXXProperties对象中,该对象注册进入容器

properties文件优先级比yaml高;

获取自定义数据方式:建议使用@ConfigurationProperties注解指定配置前缀,注解到配置对象上。

​ 可以使用@Value获取单个配置数据。

yml语法:

​ 以缩进表示层级关系;

​ 大小写敏感;

​ 冒号后面必须有空格;

​ yml相比于properties来说,有优势的地方是如果配置量大,yml的自动排版很优雅。

8.部署boot项目

其他:

在pom中添加spring-boot-devTools依赖,使用热部署,配合ctrl+F9使用。


			org.springframework.boot
			spring-boot-devtools
		

可以更改配置文件 的名字

添加链接描述

你可能感兴趣的:(spring,boot)