Spring AOP使用方法
Aspect Oriented Programming(AOP)从某种意义上说是对 OOP 的补充,因为它还提供了模块化的功能。但是模块化的关键单元是方面而不是类。 AOP 将程序逻辑分为不同的部分(称为关注点)。它用于通过 跨领域关注点来提高模块化 使用提供声明式企业服务,例如声明式事务管理。它允许用户实现自定义 aspects。 通过 “自定义注解 + AOP” 的组合,可将校验逻辑与业务代码解耦: 示例:校验时使用 自定义注解:作为 “标记”,标识需要进行校验的方法或参数(如 @NeedValidation)。 12345678910import java.lang.annotation.*;// 注解可用于方法上@Target(ElementType.METHOD)// 注解在运行时生效(AOP需要在运行时解析)@Retention(RetentionPolicy.RUNTIME)public @interface NeedValidation { // 可添加属性,例如指定校验分组 String[] groups() default {...
Maven学习记录
Maven 概述简介Maven 是一个 项目管理与构建自动化工具,主要用于 Java 项目,但也可用于其他语言Maven 解决了软件构建的两方面问题: 软件是如何构建的 软件的依赖关系。 功能 构建(编译、测试、打包、部署) 依赖(自动下载和管理第三方库) 标准化项目结构 特点 约定优于配置:提供标准化的项目结构和构建生命周期 /:存放 pom.xml 和所有的子目录 /src/main/java:项目的 java 源代码 /src/main/resources:项目的资源,比如说 property 文件,springmvc.xml /src/test/java:项目的测试类 /src/test/resources:测试用的资源 /target:打包输出目录 /target/classes:编译输出目录 /target/test-classes: 测试编译输出目录 ~/.m2/repository:Maven 默认的本地仓库目录位置 依赖管理:自动处理项目依赖关系 插件体系:丰富的插件支持各种构建任务 多模块支持:简化大型项目的管理 Maven 环境配置 安装 J...
Spring Data学习记录
事务管理Spring 解决了全局和局部事务的弊端。它让应用开发者在任何环境下都能使用一个一致的编程模型。你只需写一次代码,它就可以在不同的环境中受益于不同的事务管理策略。Spring 框架同时提供声明式和编程式事务管理。 全局事务全局事务让你与多个事务性资源一起工作,通常是关系型数据库和消息队列。应用服务器通过 JTA 管理全局事务,这意味着你也需要使用 JNDI 才能使用 JTA。全局事务的使用限制了任何潜在的应用程序代码的重用,因为 JTA 通常只在应用程序服务器环境中可用。 本地事务本地事务是特定资源的,例如与 JDBC 连接相关的事务。本地事务可能更容易使用,但有一个明显的缺点: 它们不能跨多个事务资源工作。 Spring 事务抽象Spring 事务抽象的关键是事务策略的概念。事务策略是由 TransactionManager 定义的TransactionDefinition 接口规定了: Propagation: 通常情况下,一个事务范围内的所有代码都在该事务中运行。 Isolation: 这个事务与其他事务的隔离级别 Timeout: 这个事务会保持多久直到由基础事...
Spring WebFlux学习记录
概述 传统的基于 Servlet 的 Web 框架,如 Spring MVC,在本质上都是阻塞和多线程的,每个连接都会使用一个线程。在请求处理的时候,会在线程池中拉取一个工作者( worker )线程来对请求进行处理。同时,请求线程是阻塞的,直到工作者线程提示它已经完成为止。 Spring WebFlux 是异步、非阻塞的 WEB 模块,支持 Reactive Streams 背压,并在 Netty、Undertow 和 Servlet 容器等服务器上运行。 通常它们只需要与 CPU 核⼼数量相同的线程。通过使⽤所谓的事件轮询(event looping)机制,这些框架能够⽤⼀个线程处理很多请求,这样每次连接的成本会更低。在事件轮询中,所有事情都是以事件的⽅式来进⾏处理的,包括请求以及密集型操作(如数据库和⽹络操作)的回调。当需要执⾏成本⾼昂的操作时,事件轮询会为该操作注册⼀个回调,这样操作可以并⾏执⾏,⽽事件轮询则会继续处理其他的事件 为什么要创建 Spring WebFlux? 需要一个非阻塞的 Web 栈来处理少量线程的并发,并以较少的硬件资源进行扩展。 函数...
Spring test学习记录
单元测试使用 mock 对象(结合其他有价值的测试技术)来孤立地测试你的代码。单元测试通常运行得非常快,因为没有运行时的基础设施需要设置。 Mock 对象Spring 包括一些专们用于 mock 的包 EnvironmentMockEnvironment 和 MockPropertySource 对于开发依赖环境特定属性的代码的容器外测试非常有用。 JNDI可以用它来为测试套件或独立的应用程序建立一个简单的 JNDI 环境。 Servlet API这些 mock 对象是针对 Spring 的 Web MVC 框架使用的,测试 Web 上下文、controller 和 filter 非常有用 Spring Web Reactive在 WebFlux 应用程序中使用 集成测试(常用)上下文管理和缓存Spring TestContext 框架提供了 Spring ApplicationContext 实例和 WebApplicationContext 实例的一致加载,以及这些上下文的缓存。 事务管理该框架为每个测试创建和回滚一个事务。 JDBC 测试Spring TestContext...
Spring MVC学习记录
Spring MVC SpringMVC 是一种基于 Java 的轻量级 Web 框架,属于 SpringFramework 的一部分。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无需实现任何接口。 SpringMVC 支持 RESTful 编程风格的请求,并且已经成为目前最主流的 MVC 框架之一。 它遵循 Model-View-Controller 设计模式。它实现了核心 Spring 框架的所有基本功能,例如控制反转,依赖注入。 中央 servlet (DispatcherServlet)为请求处理提供了一个共享算法,需要根据 Servlet 规范,使用 Java 配置或在 web.xml 中进行声明和映射。DispatcherServlet 使用 Spring 配置来发现它在请求映射、视图解析、异常处理 等 方面需要的委托组件。 java 注册配置初始化123456789101112131415161718public class MyWebApplicationInitializer implements WebApplicationIniti...

)
)