前言
都说程序员工资高、待遇好, 2022 金九银十到了,你的小目标是 30K、40K,还是 16薪的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer 并不算难。然而,提升 Java 核心能力最快、最有效,短期内升职加薪的方法,到底是什么?
首先,你需要跳出日常工作,接触更有深度、更前沿的顶级项目。一个简单的逻辑:大厂之所以能够给到高于行业水准的薪资,正是因为即使是普通开发人员,也要应对很多复杂的场景。这些复杂场景和项目,就像“墙外的世界”,没有看过,没有接触过,你就无法进行体系化的学习和建立认知,技术壁垒自然就出现了。
所以,如果你期望通过个人努力,实现收入增长和职位晋升,那最好的方式,一定是多学多看多做。
Spring自2002年诞生至今,已有近20年的历史,虽然几经变迁,但始终在继续发展和精进。Spring目前由Pivotal维护和开发。
Pivotal是PaaS(平台即服务)的领导者,也是消息中间件RabbitMQ的缔造者。12306的流量销峰平台Gemfire,也是该公司的手笔。另外,其与知名的NoSQL数据库Redis也渊源颇深。
Spring简化了应用系统的开发,IoC和AOP是它的两大核心理念。IoC容器用来管理组件和注入依赖,AOP进一步降低了模块的耦合性,提高了重用性和开发效率。Spring从最初搭配Structs开发Java Web应用,到Spring MVC的横空出世和成熟,始终保持着良好的扩展性和兼容性。除了默认支持的第三方库之外,其他库也容易实现与Spring的整合,这其中就包括MyBatis。相比Hibernate的全自动ORM框架,MyBatis更加灵活和有弹性,其性能也更容易得到提升。
本文从实战入手,在使用框架开发的基础上,对框架的原理和实现机制做了深入探讨和呈现,让读者知其然也知其所以然。“上士闻道,勤而行之”,技术学习最快捷的方式是在理解的基础上进行实战,在实战的基础上提升对框架的掌握度和理解度,从而实现对框架会用、用对及精用的目标。
目录
主要内容
第1篇 Spring核心框架(第1~6章),本篇首先对Spring框架的发展史、体系和生态进行介绍,从宏观上整体俯瞰Spring,然后对Spring的核心框架进行了介绍,具体包括IoC/DI概念浅析、容器配置与初始化、Bean实例化的多种方式、Bean配置属性、依赖注入及前置依赖和循环依赖配置、容器扩展点等。本篇还对Java注解、Spring容器注解及Java代码配置等进行了介绍,另外还介绍了Java测试框架及Spring测试框架等内容。
第1章Spring概述;
第2章Spring loC容器初探;IoC容器是Spring最核心的概念和内容。它替代了传统的new方式初始化对象,通过读取在XML文件中配置的Bean定义,自动创建并管理容器的Bean实例及其生命周期;最重要的是可以在Bean的定义中进行依赖对象的配置,并根据依赖配置自动注入相关依赖,降低对象之间的耦合程度,以达到解耦的效果。Spring提供了多种依赖注入方式,包括构造函数注入和设置值注入等。
为了更好地理解Spring IoC的概念,本章首先对组件、容器、框架及Bean的相关概念、控制反转和依赖注入等概念做简单的介绍,然后再对Spring容器核心进行介绍。
第3章Web项目环境搭建与项目创建;一门开发语言或一个应用框架的最直观和最快速的学习方法就是搭建好环境,写一个入门的Hello World示例。本章首先从搭建开发环境入手,紧接着创建一个Maven Web的项目(项目名称为ssmi),随后将此Web项目配置成基于Spring框架的项目,进行初步的容器配置,最后以一个简单的实例演示初始化容器和从容器获取Bean的操作。
本书其他章节的代码示例都包含在ssmi项目中,按照章节进行区分。本章中提到的软件工具在本书的配套资源中可以找到。
第4章Spring loC容器进阶;本章在第2章初步介绍Bean和依赖配置的基础上,将进一步介绍Bean实例化的多种配置方式,以满足更多的Bean初始化场景。除了id和class属性之外,可以设置Bean的更多属性定义Bean的特性和行为,包括作用域属性(scope)、懒加载属性(lazy-init)、初始化和销毁方法(init-method、destroy-method)等。
Bean的依赖注入类型除了一般的Java对象类型之外,也可以是简单类型或集合类型,同一个Bean注入多个依赖,可以指定匹配的规则和顺序。本章最后将介绍容器和Bean的扩展点,用于在Bean的不同生命周期进行功能的扩展。
第5章基于注解和代码的配置;使用XML文件配置是Spring最早的配置方式,大中型项目依据功能或不同的命名空间拆分成多个配置文件,每个配置文件的配置内容都可能比较多,导致配置文件的维护工作量大,也容易出错。
从Spring 2.5开始,在以XML文件作为主要配置的同时,可以将某些配置以注解的方式在代码中直接配置,极大地减少了配置的烦琐度,提高了配置的效率,Java开发人员也更容易熟悉和适应。从Spring 3.0开始可以完全脱离XML文件,使用Java代码的方式进行容器和框架的配置。
第6章Spring测试;
第2篇 Spring MVC框架(第7~10章),本篇首先从HTTP和Java Web开始讲起,对Spring MVC的技术细节进行了剖析,包括中央控制器、处理器映射器、处理器适配器及视图解析器等;然后在此基础上对Spring MVC的配置和注解开发进行了介绍,并对MVC项目的类型转换、数据绑定、数据验证和MVC异常处理进行了专题介绍;最后在进阶部分介绍了Spring父子容器、REST风格服务、JSON格式数据返回及文件上传等内容。
第7章Spring Web MVC概述;
第8章数据类型的转换、验证与异常处理;
第9章Spring MVC进阶;
第10章Spring MVC测试框架;
第3篇 数据技术(第11~14章),本篇首先介绍了关系型数据库、MySQL与Java数据访问技术、ORM框架、JPA统一接口等内容,然后重点介绍了MyBatis核心接口、XML全局配置及映射配置,并介绍了MyBatis的内部运作、动态SQL、缓存、SQL构造器及基于注解的开发方式等。另外,本篇还对Spring的数据访问技术做了介绍,包括Spring JDBC模板类、Spring DAO、Spring整合ORM及JPA、Spring事务管理等。
第11章数据库与Java数据访问技术;
第12章MyBatis入门;
第13章MyBatis进阶;
第14章Spring数据访问与事务管理;
第4篇 SSM整合开发(第15、16章),本篇首先介绍了Spring与Spring MVC,以及Spring与MyBatis整合开发的相关内容,并对异常处理和日志的整合方式进行了分析,然后以一个报表项目为案例,对项目的需求分析、系统分析、系统设计、系统框架搭建及代码开发等整个流程进行了全面介绍。
第15章SSM整合概述;
第16章SSM整合实例;
第5篇 高级开发技术(第17、18章),本篇主要对Spring AOP框架和Spring Security框架进行了介绍。首先在对Java代理和AspectJ框架介绍的基础上对Spring AOP进行了剖析,并对MVC项目中的拦截器和过滤器进行了比较;然后对SpringSecurity用户请求和调用方法两个层级的用户认证和授权开发进行了介绍,并对多线程的相关内容及其在Spring框架中的应用进行了介绍。
第17章Spring AOP与MVC拦截器;AOP是继OOP之后又一种重要的编程思想,作为OOP的补充和扩展,其进一步提高了代码的重用性和开发效率。在Java中,通过代理设计模式和动态代理技术,可以分别在代码结构和代码功能上实现AOP。
除JDK本身的AOP技术外,Java领域也有一些成熟的第三方AOP框架,比如AspectJ、AspectWerkz和Javassist等,其中AspectJ是最为成熟和完善的Java AOP框架。Spring基于JDK动态代理和CGLIB实现了自己的AOP框架,在框架设计和语法上都很大程度地借鉴了AspectJ,并提供了与AspectJ类似的AOP注解。
第18章Spring Security框架与多线程;权限代码混在业务逻辑代码中会造成业务代码冗余、混乱,并且容易出错。Spring Security是Spring提供的安全框架,它可以实现在不影响原有业务逻辑代码的前提下,使用过滤器(Filter)对资源层级进行保护,以及使用Spring AOP实现对方法层级的权限控制。本章主要介绍Spring Security框架的内容及用法,另外还会对Java多线程及其在Spring中的应用做简单介绍。
本文特色
1.从简到繁,由浅入深
本文按照Spring、Spring MVC、MyBatis及SSM整合的逻辑顺序组织章节,对书中的知识点从简单示例入手,进而展开详细的介绍和对内部机制的解密。
2.给出简单、细致、详尽的示例代码,方便读者快速学习和理解
本文立足实战,书中每个章节的知识点都配备了简单的示例,可以辅助读者快速入门和理解。本文中的示例代码与章节一一对应,方便读者学习和查阅。
3.全面涵盖Java Web开发技术,并对Java底层技术及其他主流库和框架做了介绍
本文主要对Spring、Spring MVC和MyBatis及其整合进行了介绍。
另外,本文还对Java Web的相关技术和框架进行了介绍,包括Java注解、单元测试(JUnit和TestNG)、Java反射与代理、Java多线程及ThreadLocal、HTTP、Servlet、REST与主流的JSON库(Json-lib、Gson、Fastjson和Jackson)、Commons FileUpload、数据库连接池(C3P0、DBCP2)、Spring与Hibernate整合以及Spring与JPA整合等。
4.注重对原理和机制进行解析,并通过简单的逻辑图示进行展示
本文注重对框架内部的实现机制和原理进行解密,包括DispatcherServlet技术细节、MyBatis运作原理、AOP实现机制及Spring Security解密等。对于这些内容,作者通过逻辑关系图或流程图进行简化和呈现,便于读者更加直观地理解。
5.项目案例典型,实战性强,可作为实际项目的模板
本文介绍了一个源自实际需求的项目实例,从需求分析开始,完整地呈现了整个项目的分析、设计、架构和开发过程。该项目架构可以作为SSM架构的模板,同类型的项目可以在此之上继续开发。