添加链接描述
添加链接描述
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
1.创建java工程的maven项目
2.在pom文件中添加springboot父工程;spring-boot-starter-parent
3.添加web开发启动器,spring-boot-web-starter
4.创建springboot的主启动类
引导器网站:https://start.spring.io/
idea集成了引导器
自己创建一个springboot项目骨架(建议使用)
src/main/resources/static:放置静态资源(html),前端可以直接访问;
src/main/resources/templates:放置视图模板资源(jsp,html),此目录下的资源受保护(前端无法访问,只能在服务端器访问该目录,由服务器主动把该目录下的资源发送客户端)
src/main/resources/application.properties:springboot项目的主配置文件,这个配置文件支持三个格式,该配置文件名称必须是application开头。在该配置文件中为springboot提供的预配置文件进行数据支持。
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开发体系中可能用到的依赖组件进行版本的统一管理。
正确的认识父工程,并不是必须的。
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对象。
org.springframework.boot
spring-boot-maven-plugin
@Configuration:声明配置类,相关创建了xml
@ComponentScan:启动包扫描,可以指定扫描范围
@PropertySource:加载properties资源配置文件;
@Import:导入其他类配置文件
1、在类继承关系中,子类会继承父类使用的注解中被@Inherited修饰的注解
2、在接口继承关系中,子接口不会继承父接口中的任何注解,不管父接口中使用的注解有没有被@Inherited修饰
3、类实现接口时,不会继承任何接口中定义的注解
使用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导入主配置类。
springboot主配置文件格式:properties或yml或yaml。
配置文件中的数据,会被加载到XXXXProperties对象中,该对象注册进入容器
properties文件优先级比yaml高;
获取自定义数据方式:建议使用@ConfigurationProperties注解指定配置前缀,注解到配置对象上。
可以使用@Value获取单个配置数据。
yml语法:
以缩进表示层级关系;
大小写敏感;
冒号后面必须有空格;
yml相比于properties来说,有优势的地方是如果配置量大,yml的自动排版很优雅。
在pom中添加spring-boot-devTools依赖,使用热部署,配合ctrl+F9使用。
org.springframework.boot
spring-boot-devtools
添加链接描述