![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SSM
文章平均质量分 85
huangyuanzhi.top
这个作者很懒,什么都没留下…
展开
-
详解<url-pattern/>
配置详解建议写为*.do 形式在没有特殊要求的情况下, SpringMVC 的中央调度器 DispatcherServlet 的<url-pattern/>常使用后辍匹配方式,如写为*.do。不能写为/*这里的 url-pattern 不能写为/*,因为 DispatcherServlet 会将向动态页面的跳转请求, 即向 JSP 页面的跳转请求也当作是一个普通的 Controller 请求。 中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的,所以在这种情况下, 所有的原创 2021-04-28 21:12:09 · 775 阅读 · 0 评论 -
详解SpringMVC执行流程
SpringMVC 执行流程SpringMVC 执行流程整体如下:执行流程分析(1)浏览器提交请求到中央调度器。(2)中央调度器直接将请求转给处理器映射器。(3)处理器映射器会根据请求,找到处理该请求的处理器,并将其封装为处理器执行链后返回给中央调度器。(4)中央调度器根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器。(5)处理器适配器调用执行处理器。(6)处理器将处理结果及要跳转的视图封装到一个对象 ModelAndView 中,并将其返回给处理器适配器。(7)处理器适配原创 2021-03-22 21:17:04 · 2412 阅读 · 0 评论 -
SpringMVC概述
SpringMVC 全称是 Spring Web MVC,是 Spring 框架一部分,是一个 MVC 的框架,和 Struts2 一样是一个表现层框架,是在 Spring3.0 后发布的。SpringMVC简介由以上 Spring 的结构图可以看出, Spring 由四大部分组成: Dao 部分(DAO 与 ORM)、AOP 部分、 Web 部分(JEE 与 Web),及 IoC 容器部分(Core)。Web 部分第一个就是 Spring Web MVC,其实 SpringMVC 是 Spring原创 2021-03-22 20:54:53 · 256 阅读 · 1 评论 -
Spring的事务管理
Spring 的事务管理事务原本是数据库中的概念,在 Dao 层。但一般情况下,需要将事务提升到业务层,即 Service 层。这样做是为了能够使用事务的特性来管理具体的业务。在 Spring 中通常可以通过以下三种方式来实现对事务的管理:使用 Spring 的事务代理工厂管理事务使用 Spring 的事务注解管理事务使用 AspectJ 的 AOP 配置管理事务Spring 事务管理APISpring 的事务管理,主要用到两个事务相关的接口。1. 事务管理器接口事务管理器是 Platf原创 2020-12-02 17:29:41 · 216 阅读 · 0 评论 -
Spring与JDBC模板
Spring 所使用的操作数据库的技术: JDBC 模板的使用和 Spring 对于事务的管理。JDBC 模板的使用,是 IoC 的应用,将 JDBC 模板对象注入给了 Dao 层的实现类。Spring 的事务管理, 是 AOP 的应用,将事务作为切面织入到了 Service 层的业务方法中。为了避免直接使用 JDBC 而带来的复杂且冗长的代码, Spring 提供了一个强有力的模板类——JdbcTemplate 来简化 JDBC 操作。并且,数据源 DataSource 对象与模板 JdbcT原创 2020-11-17 18:24:30 · 101 阅读 · 0 评论 -
Spring与AOP之AspectJ基于XML的实现
AspectJ 除了提供了基于注解的 AOP 的实现外,还提供了以 XML 方式的实现。切面就是一个 POJO 类,而用于增强的方法就是普通的方法。通过配置文件,将切面中的功能增强织入到了目标类的目标方法中。实现步骤(1) 定义业务接口与实现类//主业务接口public interface ISomeService { //主业务方法 void doFirst(); //主业务方法 String doSecond(); //主业务方法 void doThird();}//目标类原创 2020-11-04 18:45:48 · 207 阅读 · 1 评论 -
Spring与AOP之AspectJ对DAO的实现
对于 AOP 这种编程思想,很多框架都进行了实现。 Spring 就是其中之一, 可以完成面向切面编程。 然而, AspectJ 也实现了 AOP 的功能,且其实现方式更为简捷,使用更为方便,而且还支持注解式开发(在 Spring 中使用 AOP 开发时,一般使用 AspectJ 的实现方式)。AspectJ 简介AspectJ 是一个面向切面的框架,它扩展了 Java 语言。 AspectJ 定义了 AOP 语法,它有一个专门的编译器用来生成遵守 Java 字节编码规范的 Class 文件。——百度原创 2020-11-02 21:31:57 · 386 阅读 · 0 评论 -
Spring与AOP之自动代理生成器
ProxyFactoryBean 代理工具类存在着如下缺点:(1)一个代理对象只能代理一个 Bean,即如果有两个 Bean 同时都要织入同一个切面,这时,不仅要配置这两个 Bean,即两个目标对象,同时还要配置两个代理对象。(2)在客户类中获取 Bean 时,使用的是代理类的 id,而非我们定义的目标对象 Bean 的 id。我们真正想要执行的应该是目标对象。从形式上看,不符合正常的逻辑。Spring 提供了自动代理生成器,用于解决 ProxyFactoryBean 的问题。常用的自动代理生成器有两原创 2020-10-29 19:46:35 · 170 阅读 · 0 评论 -
Spring与AOP的顾问(Advisor)详解
顾问(Advisor)是 Spring 提供的另一种切面。其可以完成更为复杂的切面织入功能。PointcutAdvisor 是顾问的一种, 可以指定具体的切入点。 顾问将通知进行了包装,会根据不同的通知类型,在不同的时间点,将切面织入到不同的切入点。PointcutAdvisor 接口有两个较为常用的实现类:NameMatchMethodPointcutAdvisor 名称匹配方法切入点顾问RegexpMethodPointcutAdvisor 正则表达式匹配方法切入点顾问名称匹配方法切入点顾问原创 2020-10-24 17:26:29 · 833 阅读 · 0 评论 -
Spring与AOP的通知(Advice)详解
通知(Advice),切面的一种实现,可以完成简单织入功能(织入功能就是在这里完成的)。 常用通知有:前置通知、后置通知、环绕通知、异常处理通知。通知详解通知(Advice)是 Spring 提供的一种切面(Aspect)。但其功能过于简单:只能将切面织入到目标类的所有目标方法中, 无法完成将切面织入到指定目标方法中。前置通知定义前置通知,需要实现 MethodBeforeAdvice 接口。该接口中有一个方法 before(),会在目标方法执行之前执行。 前置通知的特点:在目标方法执行之前先执原创 2020-10-24 17:18:31 · 623 阅读 · 0 评论 -
Spring之AOP编程术语
AOP 简介AOP(Aspect Orient Programming),面向切面编程,是面向对象编程 OOP 的一种补充。面向对象编程是从静态角度考虑程序的结构,而面向切面编程是从动态角度考虑程序运行过程。AOP 底层采用两种动态代理模式实现: JDK 的动态代理与 CGLIB 的动态代理。AOP 编程术语1. 切面切面(Aspect)泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面有通知与顾问。实际就是对主业务逻辑的一种增强。2. 织入织入(Weaving)是指将切原创 2020-10-17 18:59:45 · 120 阅读 · 0 评论 -
Spring与IoC之基于注解的DI
对于 DI 使用注解,将不再需要在 Spring 配置文件中声明 Bean 实例(底层使用AOP)。定义 Bean@Component需要在类上使用注解@Component,该注解的 value 属性用于指定该 bean 的 id 值。(1) 实体类// @Scope("prototype") // 默认也是singleton@Component("myStudent")public class Student { @Value("张三") private String name; @原创 2020-10-16 22:00:17 · 82 阅读 · 0 评论 -
Spring与IoC之基于XML的DI
注入分类Bean 实例在调用无参构造器创建了空值对象后,就要对 Bean 对象的属性进行初始化。初始化是由容器自动完成的, 称为注入。根据注入方式的不同, 常用的有两类: 设值注入、构造注入(接口注入几乎不用)。设值注入设值注入是指,通过 setter 方法传入被调用者的实例(底层通过调用 setter 方法将值注入)。这种注入方式简单、直观,因而在 Spring 的依赖注入中大量使用。(1) 定义实体类public class School { private String name;}原创 2020-10-15 20:28:07 · 97 阅读 · 0 评论 -
Spring与IoC之Bean的装配
Spring 与 IoC控制反转(IoC, Inversion of Control),是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。当前比较流行的 IoC 实现方式有两种:依赖注入和依赖查找。依赖查找: Dependency Lookup, DL,容器提供回调接口和上下文环境给组件,程序代码则需要提供具体的查找方式。比较典型的是依赖于 JNDI 系统的查找。依赖注入: Dep原创 2020-10-14 21:52:13 · 269 阅读 · 0 评论 -
快速了解Spring的体系结构与特点
Spring 是一个容器,用于降低代码间的耦合度,根据不同的代码(主业务逻辑、系统级服务)采用 IoC 和 AOP 两种进行的业务逻辑。根据功能的不同,可以将一个系统中的代码分为主业务逻辑与系统级业务逻辑两类。主业务逻辑与系统级业务逻辑的特点:主业务代码间逻辑联系紧密,有具体的专业业务应用场景,复用性相对较低;系统级业务相对功能独立,没有具体的专业业务应用场景,主要是为主业务提供系统级服务,如日志、安全、事务等,复用性强。降低耦合度的方式分为了两类: IoC 与 AOP。 IoC 使得主业务在相互调原创 2020-10-13 19:47:27 · 172 阅读 · 0 评论 -
MyBatis注解式开发
注解的基础知识MyBatis 的注解,主要是用于替换映射文件。而映射文件中无非存放着增、删、改、查的 SQL 映射标签。所以, MyBatis 注解,就是要替换映射文件中的 SQL 标签。MyBatis 官方文档中指出,若要真正想发挥 MyBatis 功能,还是要用映射文件。即 MyBatis 官方并不建议通过注解方式来使用 MyBatis。注解的基础语法注解后是没有分号的。注解首字母是大写的,因为注解与类、接口是同一级别的。一个注解,后台对应着。一个@interface 类。在同一语法单元原创 2020-08-25 20:03:26 · 283 阅读 · 0 评论 -
MyBatis查询缓存
查询缓存的使用,主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从数据库查询获取结果数据,从而提高访问速度。MyBatis 的查询缓存机制,根据缓存区的作用域(生命周期) 可划分为两种: 一级查询缓存与二级查询缓存。一级查询缓存MyBatis 一级查询缓存是基于 org.apache.ibatis.cache.impl.PerpetualCache 类的 HashMap本地缓存,其作用域是 SqlSession。在同一个 SqlSession 中两次执行相同的 sql 查询原创 2020-08-15 00:10:44 · 205 阅读 · 0 评论 -
MyBatis延迟加载
延迟加载MyBatis 中的延迟加载,也称为懒加载,是指在进行关联查询时, 按照设置延迟规则推迟对关联对象的 select 查询。 延迟加载可以有效的减少数据库压力。注意:MyBatis 的延迟加载只是对关联对象的查询有迟延设置,对于主加载对象都是直接执行查询语句的。关联对象加载时机MyBatis 根据对关联对象查询的 select 语句的执行时机,分为三种类型:直接加载、侵入式延迟加载与深度延迟加载。直接加载: 执行完对主加载对象的 select 语句,马上执行对关联对象的 selec原创 2020-08-07 21:08:29 · 126 阅读 · 0 评论 -
MyBatis关联查询
关联查询当查询内容涉及到具有关联关系的多个表时, 就需要使用关联查询。根据表与表间的关联关系的不同,关联查询分为四种:(1)一对一关联查询(2)一对多关联查询(3)多对一关联查询(4)多对多关联查询日常工作中最常见的关联关系是一对多、多对一与多对多,一对一关联查询的解决方案与多对一解决方案是相同的。一对多关联查询这里的一对多关联查询是指,在查询一方对象的时候,同时将其所关联的多方对象也都查询出来。下面以国家 Country 与部长 Minister 间的一对多关系进行演示。(1) 定义原创 2020-08-01 20:55:18 · 181 阅读 · 0 评论 -
MyBatis的CURD操作(动态SQL)
动态SQL动态 SQL,主要用于解决查询条件不确定的情况:在程序运行期间,根据用户提交的查询条件进行查询。提交的查询条件不同,执行的 SQL 语句不同。若将每种可能的情况均逐一列出,对所有条件进行排列组合,将会出现大量的 SQL 语句。此时,可使用动态 SQL 来解决这样的问题。动态 SQL,即通过 MyBatis 提供的各种标签对条件作出判断以实现动态拼接 SQL 语句。这里的条件判断使用的表达式为 OGNL 表达式。 常用的动态 SQL 标签有<if/>、 <where/>、原创 2020-06-05 20:13:41 · 227 阅读 · 0 评论 -
MyBatis的CURD操作(Mapper动态代理)
在前面例子中 (Dao接口实现类) 自定义 Dao 接口实现类时发现一个问题: Dao 的实现类其实并没有干什么实质性的工作,它仅仅就是通过 SqlSession 的相关 API 定位到映射文件 mapper 中相应 id 的 SQL 语句,真正对 DB 进行操作的工作其实是由框架通过 mapper 中的 SQL 完成的。所以, MyBatis 框架就抛开了 Dao 的实现类,直接定位到映射文件 mapper 中的相应 SQL语句,对 DB 进行操作。这种对 Dao 的实现方式称为 Mapper 的动态代原创 2020-06-02 15:17:11 · 243 阅读 · 0 评论 -
MyBatis入门与实例
框架框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供上下文(Context)关系。——百度百科对于程序员来说...原创 2020-03-20 13:30:43 · 209 阅读 · 0 评论 -
MyBatis的CURD操作(Dao接口实现类)
CURD 操作,即指对数据库中实体对象的增 Create、改 Update、查 Read、删 Delete 操作。自定义 Dao 接口实现类项目实例(1)定义实体类public class Student { private Integer id; private String name; private int age; private double score;(2)定义 Dao 接口public interface IStudentDao { void insertStude原创 2020-05-26 12:56:17 · 505 阅读 · 0 评论