Spring Boot 2系列(二):FastJson集成和使用
FastJson 是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
FastJson 速度快、功能完备、API简洁。
FastJson 是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
FastJson 速度快、功能完备、API简洁。
前言:必须要感谢伟大的开源思想,感谢所有的开源团队和个人,他们提供了如此多的优秀开源项目,这是一件伟大的事。
Spring Boot 开发模板:spring-boot-template,此模板基于 Spring Boot 2.0.4 Release 版本的快速开发模板, 尽量采用 boot-starter 依赖, 使用最精简的配置。
集成了 MySQL, Druid, Mybatis, Common Mapper, pageHelper, Log4j2, Shiro, JSTL, Web页面支持 JSP, 支持打 war 包, 支持打 Docker 镜像。
Spring 提供了任务执行器(TaskExecutor
)来实现多线程和并发编程。使用ThreadPoolTaskExecutor
可实现一个基于线程池的TaskExecutor。
要实现任务异步执行,在配置为中添加@EnableAsync
开启对异步任务的支持,在执行Bean
的方法中使用@Async
注解来声明一个异步方法。
Spring项目中,Spring的启动过程实际就是IoC
容器的启动过程,对于Web程序,IoC
容器启动过程就是建立上下文的过程。
Spring 的IoC
容器可以建立父子层级关联的容器体系,子容器可以访问父容器中的Bean
,但父容器不能访问子容器中的Bean
。
在容器内,Bean
的id
必须是唯一的,但子容器可以拥有一个和父容器id
相同的Bean
。父子容器体系增强了Spring容器架构的扩展性和灵活性,第三方可以通过HierarchicalBeanFactory
接口,为一个已经存在的容器添加一个或多个特殊用途的子容器,以提供一些额外的功能。
IoC(Inverse of Control)
控制反转:不是某种技术,而是一种设计思想,Spring IoC容器是该设计思想的实现。
控制反转包含两层意思,一是控制,二是反转。
DI(Dependency Injection)
依赖注入:是组件之间、对象之间的依赖关系由容器在运行期决定,即由容器动态的将某个依赖对象注入到组件中。
控制反转和依赖注入实际说的是同一件事,只是站在两个对立的角度来解释这件事。控制反转是站在调用者的角度来理解,本来由我自己来创建对象的,现在不需要这么做了,由容器直接给你所需要的;依赖注入是站在容器的角度来理解,你需要什么,我找到给你就是,你没必要自己创建了。
Spring 项目经常需要拿到上下文,通过上下文来获取 IoC 容器中注册的 Bean。
获取上下文有好几种方式,可以实现 ApplicationContextAware 接口,可以通过 ServletContext 获取,而通过 ContextLoader 来获取上下文在 Spring Boot 中并不适用,适用于 Spring 项目。
Spring的事件(Application Event)为Bean与Bean之间的消息通信提供了支持。当一个 Bean处理完一个任务之后,希望另外一个Bean知道并能做相应的处理,这时需要让另外一个Bean监听当前Bean所发送的事件。
Spring提供了强大的注解功能,有部分注解是以@Enable*
开头的,表示开启某项功能,本文汇总下此类注解。
AspectJ
自动代理的支持。@ConfigurationProperties
注解配置Bean
的支持。Spring Data JPA Repository
的支持。Spring 提供了@Value
注解来支持资源的注入,可以很便捷的让属性值注入到组件中,当值不存在可以设置一个默认值。
@Value 注解还可以结合 Spring EL 表达式获取 Spring 容器中的 Bean 的值,以 #{}
进行表达式声明。
${}
声明,从外部配置的参数取值。#{}
声明,使用表达式获取变量的值。#{}
与 ${}
可以混合使用,必须是 #{}
在外,${}
在里面。