0


Java EE 企业级应用开发教程 第2版

在这里插入图片描述

Java EE 企业级应用开发教程 第2版

Spring

介绍

  • 概述- 分层的 Java 一站式轻量级开源框架- 控制反转 (IoC)- 面向切面编程(AOP)
  • 优点- 非侵入式设计- 降低耦合性,方便开发- 支持 AOP 编程- 支持声明式事务- 方便程序测试- 方便集成各种框架- 降低 JavaEE API 的使用难度
  • 体系结构- 核心容器- Bean,Core,Context,SpEL- 数据访问及集成- JDBC,ORM,OXM,JMS,Transactions- Web- WebSocket,Servlet,Web,Portlet- 其他模块- AOP,Aspects,Instrumentation,Messaging,Test
  • Spring 5 新特性- 更新 JDK 基线- 修订核心框架- 更新核心容器- 支持响应式编程- 支持函数式 Web 框架- 支持 Kotlin- 提升测试功能
  • 目录结构- docs- 开发指南,API 参考文档,…- libs- 开发所需的 JAR 包和源码- schema- 各种配置文件的 XML schema 文档

控制反转与依赖注入

  • 控制反转- 对象实例的控制权由应用代码转移到了 IoC 容器,控制权发生了反转。
  • 依赖注入- IoC 容器在运行期间动态的将某种依赖资源注入到对象中。- 类型- 构造方法注入- 属性 setter 方法注入

IoC 容器

  • BeanFactory 接口- Spring 容器最基本的接口- 实现类:XmlBeanFactory
  • ApplicationContext 接口- 建立在 BeanFactory 接口基础之上- 额外功能:国际化,资源访问,事件传播- 可以为单例的 Bean 实行预初始化- 实现类- ClassPathXmlApplicationContext- FileSystemXmlApplicationContext- AnnotationConfigApplicationContext- WebApplicationContext- ConfigurableWebApplicationContext
  • Bean 的配置- 格式- XML- Properties- XML 配置- <beans>- <bean>- id- name- class- scope- factory-method- factory-bean- autowire- <constructor-arg>- index- type- ref | <ref>- value | <value>- <property>- name- ref- value- <list>- <set> -<map>- <entry>- key(字符串类型)- value-ref | <ref>- value | <value>- default-autowire
  • Bean 的实例化- 构造方法实例化- 静态工厂实例化- 实例工厂实例化
  • Bean 的作用域- singleton(默认)- prototype- request- session- global session
  • Bean 的装配方式- 基于 XML- 属性 setter 方法注入- 构造方法注入- 基于注解- 在配置文件 applicationContext.xml 中开启相应的注解处理器- @Component- @Controller- @Service- @Repository- @Scope- @Value- @Autowired- @Resource- @Qualifier- @PostConstruct- @PreDestroy- 自动装配- no(默认值)- default- byName- byType- constructor
  • Bean 的生命周期- 实例初始化后- 实例销毁前- 监控- XML 配置文件- 注解

AOP

  • 介绍- 概述- 将程序中相同的业务逻辑进行横向切割,并将重复的业务逻辑抽取到一个独立的模块中,以达到提高程序可用性和开发效率的目的。- 术语- 切面(Aspect)- 用于横向插入系统的功能类- 连接点(Joinpoint)- 程序执行过程中某个特定的节点- 切入点(Pointcut)- 满足预先指定条件的连接点- 通知/增强处理(Advice)- 插入的切面程序代码,是切面的具体实现- 目标对象(Target)- 被插入切面的方法- 织入(Weaving)- 将切面代码插入到目标对象上,从而生成代理对象的过程- 代理(Proxy)- 将通知应用到目标对象后,程序动态创建的通知对象- 引介(Introduction)- 一种特殊的通知,为目标对象添加一些属性和方法
  • 实现机制- JDK 动态代理- java.lang.reflect.Proxy.newProxyInstance()- CGLib 动态代理- 不要求目标类实现接口- Spring 核心包已集成 CGLib 所需的包- org.springframework.cglib.proxy.Enhancer
  • 基于 XML 的 AOP 实现- aop:config- id- ref- aop:aspect- pointcut- pointcut-ref- method- throwing- returning- aop:advisor- aop:pointcut- id- expression- execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)- aop:before- aop:after- aop:around- aop:after-returning- aop:after-throwing
  • 基于注解的 AOP 实现- @Aspect- @Pointcut- @Before- @After- @Around- @AfterReturning- @AfterThrowing- 开启 @aspectj 的自动代理支持
  • 注意- 相关依赖- aspectjrt- aspectjweaver- JoinPoint 接口实例作为参数来获得目标对象的类名和目标方法名- ProceedingJoinPoint 接口实例作为参数来获得目标对象的目标方法参数- 环绕通知必须接收一个类型为 ProceedingJoinPoint 的参数,返回值也必须是 Object 类型,且必须抛出异常

JDBC

  • JdbcTemplate 概述- 模板类- 更高层次的抽象均在此之上- 继承:JdbcAccessor- DataSource- SQLExceptionTranslator(接口)- 负责对 SQLException 异常进行转译- 实现:JdbcOperations
  • JDBC 的配置- 模块- core- dataSource- object- support- 配置文件 applicationContext.xml 中- 配置数据源- org.springframework.jdbc.datasource.DriverManagerDataSource- 配置 JDBC 模板- org.springframework.jdbc.core.JdbcTemplate- 配置注入类- 注意- 配置 JdbcTemplate 时,需要将 dataSource 注入 JdbcTemplate 中- 其他需要使用 JdbcTemplate 的 Bean,也需要将 JdbcTemplate 注入该 Bean 中。- dataSource- driverClassName- url- username- password
  • JdbcTemplate 的常用方法- execute()- update()- query()
  • 事务管理概述- 核心接口- 依赖包:spring-tx- PlatformTransactionManager- 用于管理事务- getTransaction()- commit()- rollback()- 实现类- DataSourceTransactionManager- TransactionDefinition- 定义事务描述相关的常量- 事务的隔离级别- 默认- 读—未提交(脏读,幻读,不可重复读)- 读—已提交(幻读,不可重复读)- 允许重复读(MySQL 默认隔离级别)- 事务串行执行- 事务的传播行为- 事务的超时时间- 是否为只读事务- 方法:获取事务的属性- TransactionStatus- isNewTransaction()- hasSavepoint()- isRollbackOnly()- setRollbackOnly()- isCompleted()- flush()- 事务管理的方式- 编程式- 通过编写代码实现的事务管理- 声明式- 通过 AOP 实现的事务管理- 相关依赖- aspectjweaver- aopalliance
  • 声明式事务管理- XML 方式- 引入 tx 命名空间- tx:advice- id- transaction-manager- tx:attributes- tx:method- name- propagation- isolation- read-only- timeout- rollback-for- no-rollback-for- 注解方式- @Transactional- value- propgation- isolation- timeout- readonly- rollbackFor- rollbackForClassName- noRollbackFor- noRollbackForClassName- 类上- 该类的所有 public 方法都将具有同样类型的事务属性- 类中的方法上- 若类上也有该注解,屏蔽掉类上的- 注意:配置事务注解驱动

Spring MVC

介绍

  • 基于 Servlet API 构建的原始 Web 框架
  • 作用于三层架构的表现层
  • 控制器- 接收客户端的请求- 对请求进行解析和封装- 将请求交给业务层处理
  • 视图- 对处理结果进行渲染- 响应给客户端
  • 工作原理- 组件- 处理器映射器- 处理器适配器- 视图解析器

核心类和注解

  • DispatcherServlet
  • @Controller
  • @RequestMapping- @GetMapping- @PostMapping- @PutMapping- @DeleteMapping- @PatchMapping
  • URL 路径映射- Ant 风格- RESTful 风格

数据绑定和响应

  • 绑定:请求参数绑定到处理器形参中- ServletRequest → DataBinder → ConvertService → Validator → BindingResult
  • 简单数据绑定- 默认类型数据绑定- HttpServletRequest- HttpServletResponse- HttpSession- Model/ModelMap- 简单数据类型绑定- Java 中基本类型- POJO 绑定- 自定义类型转换器
  • 复杂数据绑定- 数组绑定- 集合绑定- 复杂 POJO 绑定- 属性为对象类型- 属性为 List 类型- 属性为 Map 类型- JSON 数据绑定
  • 页面跳转- 返回值为 void 类型的页面跳转- 返回值为 String 类型的页面跳转- 不携带数据- 携带数据- 返回值为 ModeAndView 类型的页面跳转
  • 数据回写- 普通字符串回写- JSON 数据回写- 对象数据转换成 JSON 数据后的回写- 集合数据转换成 JSON 数据后的回写

高级功能

  • 异常处理- 简单异常处理器- 自定义异常处理器- 异常处理注解
  • 拦截器- 概述- 动态拦截 Controller 方法调用的对象。- 只针对 Spring MVC 的请求进行拦截- 配置- 执行流程- 单个拦截器- 多个拦截器

MyBatis

介绍

  • ORM 框架
  • 工作原理

配置

  • 核心对象- SqlSessionFactoryBuilder- SqlSessionFactory- SqlSession
  • 配置文件- 主要元素- <configuration>- <properties>:配置属性- <settings>:改变运行时的行为- <typeAliases>:类型别名- <typeHandlers>- <objectFactory>- <plugins>- <environments>- <environment>- <transactionManager>- <dataSource>- <mappers>:引入映射文件- 映射文件- 常用元素- <mapper>- <cache>- <cache-ref>- <select>- <insert>- <update>- <delete>- <sql>- <resultMap>

动态 SQL

  • 元素- <if>- <choose>(<when>,<otherwise>)- <where>- <trim>- <set>- <foreach>- 数组- List- Map

关联映射和缓存机制

  • 一对一- <association>
  • 一对多- <collection>
  • 一级缓存- SqlSession 级
  • 二级缓存- Mapper 级

注解开发

  • 单表增删改查- @Select- @Insert- @Update- @Delete- @Param
  • 关联查询- 一对一- @One- 一对多- @Many
标签: java-ee java spring

本文转载自: https://blog.csdn.net/qq_35414977/article/details/128105658
版权归原作者 kk8_ 所有, 如有侵权,请联系我们删除。

“Java EE 企业级应用开发教程 第2版”的评论:

还没有评论