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模块。

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

2.  Spring的生态

Spring发展到现在,不仅仅是Spring框架本身的内容,Spring提供了大量的基于Spring的项目,可以更深入的降低我们的开发难度,提高开发效率。

目前Spring的生态主要有以下项目,我们可以根据需要选择使用相应的项目。

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

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

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

2.  配置Maven

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

3.  测试安装

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

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.  变量定义

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

4.  编译插件

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

5.  Maven运行方式

Maven会根据dependency中的依赖去maven中心下载相关的依赖包到本地仓库。

如果不知道所需的jar包怎么添加依赖,推荐到http://mvnrepository.com网站检索。

若Maven中心仓库没有所需要的jar包,可以通过下面的Maven命令打到本地Maven仓库后即可使用。例如安装Oracle驱动到本地仓库:

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

1.2.4  Spring项目搭建

1.  基于Spring Tool Suit搭建

2.  基于IntelliJ IDEA搭建

3.  基于NetBeans搭建

1.3  Spring基础配置

Spring框架本身的四大原则:

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

Spring所有功能的设计和实现都是基于此四大原则的。

1.3.1  依赖注入

1.  点睛

依赖注入(DI)和控制反转(IoC)在Spring中是同等概念,控制反转是通过依赖注入实现的。

依赖注入:指的是容器负责创建对象和维护对象之间的依赖关系,而不是通过对象本省负责自己的创建和解决自己的依赖。

依赖注入的主要目的是为了解耦合,体现了组合的理念。

Spring IoC容器负责创建Bean,并通过容器将功能类Bean注入到你所需要的Bean中。Spring提供使用xml、注解、Java配置、groovy配置实现Bean的创建和注入。

无论是xml配置哦、注解配置还是Java配置,都称为配置元数据,所谓元数据即描述数据的数据。元数据本身不具备任何可执行能力,只能通过外界代码对这些元数据进行解析后进行一些有意义的操作。Spring容器解析这些配置元数据进行Bean初始化、配置和管理依赖。

       JavaEE开发的颠覆者 SpringBoot实战 学习笔记

@Autowire、@Inject、@Resource可注解在set方法或者属性上,常用是注解在属性上,优点是代码更少,层次更清晰。

2.  示例

本节演示基于注解的Bean初始化和依赖注入,Spring容器选AnnotationConfigApplicationContext 

      JavaEE开发的颠覆者 SpringBoot实战 学习笔记

     JavaEE开发的颠覆者 SpringBoot实战 学习笔记

     JavaEE开发的颠覆者 SpringBoot实战 学习笔记

1.3.2  Java配置

1.  点睛

Java配置是Spring 4.x推荐的配置,也是SpringBoot推荐使用的配置,可以完全代替xml配置。

Java配置是通过@Configuration和@Bean实现的。

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

本文通篇使用Java配置和注解混合配置。

使用原则:全局配置使用Java配置(例如数据库相关配置、MVC相关配置),业务Bean的配置使用注解配置(@Service、@Component、@Repository、@Controller)

2.  示例

本节介绍Java配置。

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

1.3.3  AOP

1.  点睛

AOP即面向切面编程,Spring的AOP存在的目的是解耦合,让一组类共享相同的行为。

Spring支持AspectJ的注解切面式编程。

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

2.   示例

本节演示基于注解和基于方法规则拦截两种方式,演示一种模拟记录操作的日志系统的实现。其中,注解拦截能够很好的控制拦截粒度和获得更丰富的信息,Spring本身在事务处理(@Transcational)和数据缓存(@Cacheable)上面都使用此种形式的拦截。

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记

JavaEE开发的颠覆者 SpringBoot实战 学习笔记


第2章  Spring常用配置