JavaEE开发的颠覆者 SpringBoot实战 学习笔记
第一部分
点睛Spring 4.x
第1章 Spring 基础
1.1 Spring概述
1.1.1 Spring简史
第一阶段:xml配置
在Spring 1.x时代,是使用xml配置Bean,随着项目的扩大,在不同的xml配置文件配置Bean.
第二阶段:注解配置
在Spring 2.x时代,伴随着JDK1.5支持注解,Spring提供了声明Bean的注解(例如:@Component、@Service)。在应用的基本配置(例如数据库配置)使用xml,业务配置使用注解。
第三阶段:Java配置
从Spring 3.x到现在,Spring提供了java配置的能力,使用Java配置可以让你更加理解你配置的Bean。Spring 4.x和SpringBoot都推荐使用Java配置。
1.1.2 Spring概述
Spring框架是一个轻量级的企业级开发的一站式解决方案,所谓的解决方案就是可以基于Spring解决Java EE开发的所有问题。SPring框架提供了IoC容器、AOP、数据访问、web开发、消息、测试等相关技术。
Spring使用简单的POJO(Plain Old Java Object)进行企业级开发,每一个被Spring管理的Java对象都称为Bean;Spring提供了一个IoC容器来初始化对象,解决对象之间的依赖管理和对象的使用。
1. Spring的模块
Spring是模块化的,意味着你可以使用你所需要的Spring模块。
2. Spring的生态
Spring发展到现在,不仅仅是Spring框架本身的内容,Spring提供了大量的基于Spring的项目,可以更深入的降低我们的开发难度,提高开发效率。
目前Spring的生态主要有以下项目,我们可以根据需要选择使用相应的项目。
1.2 Spring项目快速搭建
目前主流的项目构建工具有:Ant、Maven、Gradle等,本文使用Maven作为项目构建工具。
1.2.1 Maven简介
Apache Maven是一个软件项目管理工具,基于项目对象模型(Project Object Model,POM)的概念。Maven可以来管理项目的依赖、编译、文档等信息。
使用Maven管理的项目,项目依赖的jar包将集中放在用户目录下的.m文件夹中。
1.2.2 Maven安装
1. 下载Maven
2. 配置Maven
3. 测试安装
1.2.3 Maven的pom.xml
Maven是基于项目对象模型的概念运作的,所以Maven的项目都有一个pom.xml用来管理项目的依赖以及项目的编译等功能。
在项目中,我们关注以下的元素:
1. dependencies元素
<dependencies></dependencies>此元素包含多个项目依赖所需要使用的<dependency></dependency>.
2. dependency元素
<dependency></dependency>内部通过groupId、artifactId以及version确定唯一的依赖,也称这三个为坐标。
groupId:组织唯一标识
artifactId:项目唯一标识
version:项目版本
3. 变量定义
4. 编译插件
5. Maven运行方式
Maven会根据dependency中的依赖去maven中心下载相关的依赖包到本地仓库。
如果不知道所需的jar包怎么添加依赖,推荐到http://mvnrepository.com网站检索。
若Maven中心仓库没有所需要的jar包,可以通过下面的Maven命令打到本地Maven仓库后即可使用。例如安装Oracle驱动到本地仓库:
1.2.4 Spring项目搭建
1. 基于Spring Tool Suit搭建
2. 基于IntelliJ IDEA搭建
3. 基于NetBeans搭建
1.3 Spring基础配置
Spring框架本身的四大原则:
Spring所有功能的设计和实现都是基于此四大原则的。
1.3.1 依赖注入
1. 点睛
依赖注入(DI)和控制反转(IoC)在Spring中是同等概念,控制反转是通过依赖注入实现的。
依赖注入:指的是容器负责创建对象和维护对象之间的依赖关系,而不是通过对象本省负责自己的创建和解决自己的依赖。
依赖注入的主要目的是为了解耦合,体现了组合的理念。
Spring IoC容器负责创建Bean,并通过容器将功能类Bean注入到你所需要的Bean中。Spring提供使用xml、注解、Java配置、groovy配置实现Bean的创建和注入。
无论是xml配置哦、注解配置还是Java配置,都称为配置元数据,所谓元数据即描述数据的数据。元数据本身不具备任何可执行能力,只能通过外界代码对这些元数据进行解析后进行一些有意义的操作。Spring容器解析这些配置元数据进行Bean初始化、配置和管理依赖。
@Autowire、@Inject、@Resource可注解在set方法或者属性上,常用是注解在属性上,优点是代码更少,层次更清晰。
2. 示例
本节演示基于注解的Bean初始化和依赖注入,Spring容器选AnnotationConfigApplicationContext
1.3.2 Java配置
1. 点睛
Java配置是Spring 4.x推荐的配置,也是SpringBoot推荐使用的配置,可以完全代替xml配置。
Java配置是通过@Configuration和@Bean实现的。
本文通篇使用Java配置和注解混合配置。
使用原则:全局配置使用Java配置(例如数据库相关配置、MVC相关配置),业务Bean的配置使用注解配置(@Service、@Component、@Repository、@Controller)
2. 示例
本节介绍Java配置。
1.3.3 AOP
1. 点睛
AOP即面向切面编程,Spring的AOP存在的目的是解耦合,让一组类共享相同的行为。
Spring支持AspectJ的注解切面式编程。
2. 示例
本节演示基于注解和基于方法规则拦截两种方式,演示一种模拟记录操作的日志系统的实现。其中,注解拦截能够很好的控制拦截粒度和获得更丰富的信息,Spring本身在事务处理(@Transcational)和数据缓存(@Cacheable)上面都使用此种形式的拦截。
第2章 Spring常用配置