框架那些事儿
安正勋
点点滴滴,皆是学问,看到了、学会了、记住了,便是收获、便是进步。
展开
-
详述 Spring MVC 启动流程及相关源码分析
- 部署描述文件中(例如 Tomcat 的`web.xml`)由`<listener>`元素标记的事件监听器会被创建和初始化- 对于所有事件监听器,如果实现了`ServletContextListener`接口,将会执行其实现的`contextInitialized()`方法- 部署描述文件中由`<filter>`元素标记的过滤器会被创建和初始化,并调用其`init()`方法- 部署描述文件中由`<servlet>`元素标记的 Servlet 会根据`<load-on-startup>`的权值按顺序创转载 2020-05-30 09:00:52 · 5693 阅读 · 15 评论 -
详述 Spring MVC 框架中拦截器 Interceptor 的使用方法
1 前言 昨天新接了一个需要,“拦截 XXX,然后 OOO”,好吧,说白了就是要用拦截器干点事(实现一个具体的功能)。之前,也在网络上搜了很多关于Interceptor的文章,但感觉内容都大同小异,而且知识点零零散散,不太方便阅读。因此,正好借此机会,整理一篇关于拦截器的文章,在此分享给大家,以供大家参考阅读。2 拦截器2.1 概念 Java 里的拦截器是动态拦截 action 调用的对象。它提原创 2017-03-30 17:02:05 · 90154 阅读 · 15 评论 -
史上最简单的 MyBatis 教程(一)
1 简介MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,其几乎消除了所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。MyBatis 应用程序大都使用 SqlSessionFac原创 2017-02-02 10:25:03 · 77928 阅读 · 30 评论 -
史上最简单的 Spring MVC 教程(一)
1 简介Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块,而 Spring MVC 就是其中最优秀的 MVC 框架。自从 Spring 2.5 版本发布后,由于支持注解配置,易用性得到了大幅度的提高;Spring 3.0 更加完善,实现了对 Struts 2原创 2017-01-24 22:34:08 · 57179 阅读 · 21 评论 -
架构真经 | 缓存为王
作者介绍:陈斌,易宝支付 CTO,《架构即未来》、《架构真经》等书译者,1024 学院互联网 CTO 班幽谷派掌门。正文在商业世界中,人们常说“现金为王”。然而,在技术世界里,我们却说“缓存为王”。 从浏览器到应用前端、应用后端、数据库,每一层都可以通过缓存来显著地提高系统的扩展能力,改善系统的响应能力,同时减少系统的负担。互联网平台上的内容可以分为静态和动态两种。静态内容指那些不经常改变的文本和转载 2017-04-18 23:48:59 · 7021 阅读 · 0 评论 -
史上最简单的 MyBatis 教程
1 前言 MyBatis 源于 Apache 的一个开源项目 iBatis,而 iBatis 一词则来源于“internet”和“abatis”的组合,2010年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为MyBatis ,2013年11月其又迁移到 Github。MyBatis 是一个基于 Java 的支持普通 SQL 查询,存储原创 2017-02-01 00:49:17 · 40539 阅读 · 8 评论 -
史上最简单的 Spring MVC 教程(三)
1 前言在史上最简单的 Spring MVC 教程(二)中,咱们讲解了常见的处理器映射(handlerMapping),并给出了应用示例。在本篇博客中,咱们讲解常见的控制器(Controller),在这里有一点需要大家知晓,那就是:在我们创建Controller,并继承父类的时候,父类上会被画上一条横线,这表示该类已经过时啦!这是因为在 Spring 框架在升级到 Spring 3.0 后,推荐大家原创 2017-01-26 01:36:59 · 6252 阅读 · 3 评论 -
史上最简单的 Spring MVC 教程(二)
1 前言在史上最简单的 Spring MVC 教程(一)中,咱们已经成功搭建起 Spring MVC 框架,并且运行成功。在本篇博客中,咱们首先尝试着对前面的程序进行修改,即修改“action-servlet.xml”配置文件的位置和名称,修改后项目结构图如下:如上图所示,咱们调整“action-servlet.xml”的位置到“src”目录下,并修改其名称为“springmvc-se原创 2017-01-25 11:25:29 · 9941 阅读 · 14 评论 -
精炼 Spring MVC 教程 之「框架初体验」
1 简介 Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块,而 Spring MVC 就是其中最优秀的 MVC 框架。自从 Spring 2.5 版本发布后,由于支持注解配置,易用性得到了大幅度的提高;Spring 3.0 更加完善,实现了对 Struts原创 2017-08-21 17:17:51 · 4464 阅读 · 8 评论 -
史上最简单的 Spring MVC 教程
1 前言 spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块,而 Spring MVC 就是其中最优秀的 MVC 框架。自从 Spring 2.5 版本发布后,由于支持注解配置,易用性得到了大幅度的提高;Spring 3.0 更加完善,实现了对 Struts原创 2017-01-25 11:41:17 · 15446 阅读 · 8 评论 -
终极对决!Dubbo 和 Spring Cloud 微服务架构到底孰优孰劣?
前言核心部件1 总体架构2 微服务架构核心要素通讯协议1 支持协议2 性能比较服务依赖方式组件运行流程微服务架构组成以及注意事项1 架构分解2 注意事项总结前言微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影转载 2018-01-02 19:45:27 · 5891 阅读 · 2 评论 -
Spring 框架中切入点 pointcut 表达式的常用写法
自从使用 AspectJ 风格切面配置,使得 Spring 的切面配置大大简化,但是 AspectJ 是另外一个开源项目,其规则表达式的语法也稍稍有些怪异。下面给出一些常见示例的写法,例如,下面是一个对 Service 包上所有方法的切面配置:<aop:config> <aop:pointcut id="serviceOperation" expression="execution(* *转载 2017-04-01 11:25:46 · 6021 阅读 · 3 评论 -
史上最简单的 MyBatis 教程(四)
1 前言在史上最简单的 MyBatis 教程(一、二、三)中,咱们已经初步体验了 MyBatis 框架的特性,尤其是其支持普通的 SQL 语句,但如果仔细阅读前三篇博文的示例,我们会发现到现在为止,映射文件 UserMapper.xml 中给出的 SQL 语句都非常的简单,不足以满足我们个性化的需求。因此,在本篇博文中,咱们更进一步,研究一下 MyBatis 框架是如何支持动态 SQL 语句的。2原创 2017-02-03 22:49:02 · 10248 阅读 · 20 评论 -
史上最简单的 MyBatis 教程(二)
1 前言在史上最简单的 MyBatis 教程(一)中,咱们已经初步搭建了 MyBatis 框架,实现了查询所有记录的功能,并用 JUnit 进行了单元测试。接下来,咱们继续体验 MyBatis 框架,并实现增加、修改和删除等三个功能。2 示例老规矩,首先给出项目结构图:在实现以下三个功能的时候,咱们需要修改的地方其实并不多,只需要修改两个地方就可以啦,分别是映射文件 UserMapper.xml 和原创 2017-02-02 11:40:36 · 19461 阅读 · 24 评论 -
详述 @Service 和 @Resource 注解的区别
1 前言在咱们使用 Spring 框架的时候,注解是“不可或缺”的一部分,她帮我们脱离了配置繁琐的 XML 文件的工作,但有一点却需要我们自己去把握,那就是“3何”,即“何时何地用何注解?”在本篇博文中,作者就简单介绍一下如何恰当的使用 @Service 和 @Resource 这两个注解。2 注解2.1 @Service当咱们需要定义某个类为一个 bean 的时候,就可以在这个类的类名上一行加一个原创 2017-03-02 11:43:06 · 13790 阅读 · 5 评论 -
详述 @Autowired 和 @Resource 注解的区别
在 Spring 框架中,除了使用其特有的注解外,使用基于 JSR-250 的注解,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释。 首先,咱们简单了解 @PostConstruct 和 @PreDestroy 注释: 为了定义一个 bean 的安装和卸载,我们可以使用 init-method 和 destroy-method 参数简单的声明一下 ,原创 2017-02-07 15:05:21 · 6798 阅读 · 4 评论 -
史上最简单的 Spring MVC 教程(五)
1 前言在史上最简单的 Spring MVC 教程(四)中,咱们已经感受到了 Spring MVC 框架的注解的方便之处啦!那么,接下来,就让咱们进一步体验注解的魅力,用注解的方式实现显示“人员列表”的功能。2 注解示例在本部分,咱们的目的就是实现在页面上显示“人员列表”的功能,但由于咱们没有连接数据库,所以咱们可以在 service 层模拟内存数据库,然后通过注解的方式注入到 Controller原创 2017-01-27 01:45:20 · 6465 阅读 · 8 评论 -
史上最简单的 Spring MVC 教程(六)
1 前言在史上最简单的 Spring MVC 教程(五)中,咱们已经实现了在Spring MVC框架下运用注解的方式显示“人员列表”信息的功能。那么,在本篇博客中,咱们更进一步,继续实现“人员列表”的添加、删除和修改的功能。2 注解示例2.1 添加首先,给出项目结构图:第一步:在 Service 层(PersonService)中新建插入方法package spring.mvc.service;im原创 2017-01-28 22:20:45 · 3345 阅读 · 2 评论 -
史上最简单的 Spring MVC 教程(七)
1 前言在史上最简单的 Spring MVC 教程(六)中,咱们已经实现了“人员列表”的添加功能,接下来,在本篇博文中,咱们继续实现“人员列表”中人员信息的修改功能。2 注解示例首先,给出项目结构图:第一步:在 Service 层(PersonService)中新建更新和获得实体的方法package spring.mvc.service;import org.springframework.ster原创 2017-01-29 10:19:36 · 2978 阅读 · 2 评论 -
史上最简单的 Spring MVC 教程(八)
1 前言在史上最简单的 Spring MVC 教程(七)中,咱们已经实现了“人员列表”的修改功能,那么接下来,在本篇博文中,咱们继续实现“人员列表”中人员信息的删除功能,包括删除单条记录和批量删除记录。2 注解示例 - 删除老规矩,首先给出项目结构图:2.1 删除单条记录第一步:在 Service 层(PersonService)中新建删除单体记录的方法package spring.mvc.serv原创 2017-01-29 15:56:15 · 2950 阅读 · 2 评论 -
史上最简单的 Spring MVC 教程(九)
1 前言在史上最简单的 Spring MVC 教程(五、六、七、八)等四篇博文中,咱们已经分别实现了“人员列表”的显示、添加、修改和删除等常见的增、删、改、查功能。在接下来,也就是在本篇博文中,咱们在继续实现新的功能,即:长传图片和显示图片。2 注解示例 - 上传及显示图片老规矩,首先给出项目结构图:2.1 显示图片第一步:修改 web.xml 文件,拦截所有的 URL<?xml version="原创 2017-01-29 21:32:42 · 3463 阅读 · 1 评论 -
史上最简单的 Spring MVC 教程(十)
1 前言在史上最简单的 Spring MVC 教程(九)中,咱们已经实现了图片的上传及显示功能,那么接下来,在本篇博文中,咱们更进一步,以实体类(Person)中的字段“name”和控制器(PersonController)中的方法 updatePersonList 为例,实现参数的校验功能。2 注解示例 - 参数校验老规矩,首先给出项目结构图:在给出代码之前, 咱们先明确参数校验的步骤:导入参数原创 2017-01-30 23:06:03 · 5272 阅读 · 4 评论 -
史上最简单的 MyBatis 教程(三)
1 前言在史上最简单的 MyBatis 教程(一、二)中,咱们已经初步体验了 MyBatis 框架的一些优秀的特性,例如在映射文件中书写自定义的 SQL 语句以及便捷的调用方式等等。为了能够更好的掌握 MyBatis 框架的知识点,在本篇博文中,咱们一起总结一下前两篇博文的内容。2 总结2.1 映射文件在此,咱们仅以前两篇博文中的代码为例,给出映射文件 Mapper.xml 的总结:① 设置 nam原创 2017-02-02 20:31:30 · 10095 阅读 · 5 评论 -
史上最简单的 Spring MVC 教程(四)
1 前言在前面的三篇博客中,咱们已经初步搭建起了 Spring MVC 框架,并依次介绍了 Spring MVC 框架的处理器映射(HandlerMapping)和控制器(Controller),但咱们也说了,在 Spring 框架体系升级到 Spring 3.0 之后,推荐提供大家使用注解功能,而不用再去继承不同的控制器父类,以及在 XML 文件中配置那么多东西啦!注解已经帮我们解决上述的麻烦啦,原创 2017-01-26 13:53:12 · 5593 阅读 · 3 评论 -
史上最简单的 MyBatis 教程(五)
1 前言在史上最简单的 MyBatis 教程(一、二、三、四)中,咱们已经把 MyBatis 框架的基本内容了解的差不多啦,然而美中不足的是:在前四篇博文的示例中,咱们仅仅演示了一对一(1:1)的映射关系,并没有演示一对多(1:N)的映射关系。因此,在本篇博文中,咱们就一起来看看 MyBatis 框架如何实现一对多的映射关系!2 关联映射(1:N)为了更好的演示一对多的映射关系,在原有的项目中,又新原创 2017-03-07 10:30:37 · 7779 阅读 · 10 评论 -
详述 @ResponseBody 和 @RequestBody 注解的区别
1 前言在详述 @ResponseBody 和 @RequestBody 注解之前,咱先了解一下 @RequestMapping 注解,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径;用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法。例如:/*** 用于类上,可以没有*/@Re原创 2017-03-02 19:36:52 · 57568 阅读 · 7 评论