- 博客(58)
- 收藏
- 关注
原创 springmvc5的四个HandlerAdapter
springmvc5中有四个非抽象的HandlerAdapter:1.SimpleServletHandlerAdapter2.SimpleControllerHandlerAdapter3.HttpRequestHandlerAdapter4.RequestMappingHandlerAdapterspringmvc通过HandlerMapping将请求URL...
2020-03-28 18:29:08 6966 1
原创 springmvc5的三个HandlerMapping
springmvc5里有三个非抽象类的HandlerMapping:1.SimpleUrlHandlerMapping2.BeanNameUrlHandlerMapping3.RequestMappingHandlerMapping(这个是最常用的)(在springmvc4里还有一个ControllerClassNameHandlerMapping,在springm...
2020-03-28 16:34:23 2108
原创 spirngmvc处理请求流程总结:DispatcherServlet
springmvc的请求入口是DispatcherServlet(需要在web.xml里进行配置)。一、DispatcherServlet初始化1.DispatcherServlet提供了两个构造方法:无参构造方法用于Servlet2.5或更早的环境;带参构造方法在Servlet3.0及以后的环境中会用到。2.DispatcherServlet在初始...
2020-03-28 12:57:52 825
原创 springmvc:View和ViewResolver解析
springmvc由HandlerAdapter执行具体的handler后,返回的是ModelAndView对象,如何映射到具体的视图,生成页面返回到浏览器,就需要ViewResolver和View来操作了。直接到DispatcherServlet里看源码:这里可以看到ViewResolver会对viewName进行解析,得到View对象。从类成员变量t...
2020-03-28 11:19:46 3779
原创 Springmvc HandlerAdapter解析
springmvc中HanlderMapping和HandlerAdapter一般是对应出现(并不是一一对应,一个HandlerAdapter可以匹配处理多个HandlerMapping,一个HandlerMapping应该也可以被多个HandlerAdapter处理,但具体配置时应该只是一个,配置多个没有意义,只会被order值小的HandlerAdapter处理)。—...
2020-03-28 11:07:55 1590
原创 springmvcHandlerMapping解析
Spingmvc中的HandlerMapping负责解析请求URL,对应到Handler进行处理(这里的Handler一般为Controller里的一个方法method,也可以为servlet或者Controller等)先来看一个http请求的入口DispatcherServlet:DispatcherServlet继承FrameworkServlet,Fr...
2020-03-28 10:52:00 2735
原创 springmvc跳转到静态资源
springmvc的入口是DispatcherServlet,在web.xml中的配置一般是拦截所有的请求,作为http请求访问的入口。在springvc.xml里做最简单的配置如下:在Controller里访问html:会发现页面404:原因是没有从HandlerMapping里找到对应的handler进行处理。DispatcherServlet拦截所有请...
2020-03-28 10:38:06 2895
原创 最简单的springmvc搭建
1.使用maven,在pom.xml里引入springmvc需要的包:这里只需要引入spring-webmvcjar包就好,maven会自动添加其他需要的依赖,spring-core、spring-beans等:2.配置web.xml:配置DispatcherServlet,作为springmvc的入口,拦截所有请求;在init-param配置conte...
2020-03-28 10:17:06 517
原创 mybatis-generator,最简单的配置使用
最近在整springboot和mybatis的整合,相比较spring data jpa,mybatis所有的sql都得自己写,在做一些基本的增删改查SQL时,会比较重复和繁琐。mybatis-generator可以简化这个步骤,基本的增删改查代码可以一键生成,便捷使用。mybatis-generator使用起来很简单,最好单独作为一个Maven工程,打成一个JAR使用。1.pom.x...
2020-03-11 15:57:49 302
原创 springboot整合mybatis最简单的方式
最近在折腾springboot整合mybatis,上一篇文章springboot配置dataSource无法从application.properties文件获取配置项值也是在整合的过程中出现的问题。其实上一篇文章的方式并不是最简单的整合方式,既然使用了springboot,就不应该在配置方面操心太多,不然就失去了使用springboot的意义。这篇文章来整理一下最简单的整合方式。ps...
2020-03-09 16:01:26 494
原创 springboot配置dataSource无法从application.properties文件获取配置项值
最近在弄springboot整合mybatis,遇到一个非常诡异的问题:1.新增一个BeanConfig用来配置dataSource等相关信息:/** * * @author Mars * */@Configurationpublic class BeanConfig { /** * * @return */ @Bean @ConfigurationP...
2020-03-01 19:58:09 6221
原创 Maven开启Debug模式
使用maven启动springboot,为了方便查找问题,需要打印更多的DEBUG日志,这个时候在maven启动命令后加上 -X 就可以了:spring-boot:run -X
2020-03-01 18:23:36 2728
原创 springboot初识---最简单的例子_晏无心_新浪博客
一、什么是springboot1.SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。2.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配。3.springboot使用“约定大于配置”的方式,提供了一系列框架的默认配置方式。4.作为一个整合平台,为第三方框架提供默认配置服务,第三方框架可以按...
2018-09-12 14:23:12 156
原创 dubbo注册中心之三:redis注册中心_晏无心_新浪博客
使用redis作为dubbo的注册中心,主要用到redis的两点功能:1.key-value的存储2.发布和订阅的消息机制来看具体的配置:两种配置方式,可以配置多台redis。再来看具体的例子:引入jar依赖连接redis服务器;设置key值,将服务提供者的地址赋值;发布服务提供者启动的消息。连接redis服务器;服务消费者启...
2018-09-04 09:16:16 476
原创 dubbo注册中心之二:zookeeper注册中心_晏无心_新浪博客
dubbo注册中心有多种实现方式,之前写过的multicast(组播)是一种比较简单的方式,zookeeper实现是另一种方式。前面花时间研究了一下zookeeper,了解了zookeeper的基本功能,再结合dubbo注册中心的需求,使用zookeeper来实现注册中心就很明了了。1.服务提供者启动时,连接zookeeper,并且在“/dubbo/com.foo.BarServ...
2018-08-10 13:39:06 126
原创 zooKeeper之配置管理简单例子_晏无心_新浪博客
集中式的配置管理在应用集群中是非常常见的,一般商业公司内部都会实现一套集中的配置管理中心,应对不同的应用集群对于共享各自配置的需求,并且在配置变更时能够通知到集群中的每一个机器。Zookeeper很容易实现这种集中式的配置管理。来看具体的例子:新增三个Client,模拟真实系统的应用。Client1作为配置管理应用:创建configznode,设置配置的默认值:...
2018-08-07 14:57:54 154
原创 dubbo注册中心之一:Multicast(组播)注册中心_晏无心_新浪博客
dubbo的注册中心可以有多种选择实现方式,这里来看的是Multicast(组播)的方式。一、dubbo注册中心是干什么的?个人理解dubbo注册中心就是用来发现服务提供方和服务消费方的。1.服务提供方启动后,主动发消息给注册中心,注册中心获取服务提供方的地址列表;2.服务消费方启动会,主动发消息给注册中心,订阅服务;3.注册中心将服务对应的服务提供方地址列表发送给服务消费方。...
2018-08-06 10:03:21 1090
原创 javafuture和Callable简单例子_晏无心_新浪博客
直接来看例子:实现Callable接口。实现call()方法,里面设置了三种场景:1.快速的返回;2.循环执行,或者耗时很长;3.执行出错,抛出异常。在main()方法里执行:查看最终运行结果:javafuture和callable实现的是半异步的方式,在新开线程进行执行后,主线程可以先去干其他的事情,这个时候,是异步的;一旦通过future.get(...
2018-07-31 14:39:47 181
原创 Reactor简单例子_晏无心_新浪博客
Reactor模式是把一个完整的IO操作分成几部分来进行,使用一个或多个Reactor来处理IO请求,对于具体的IO读写以及数据读取完成后的操作,分成更细粒度的模块,根据具体的需求和模块的耗时,来选择性使用单线程或是多线程或者线程池来完成整个IO操作。来看具体的例子:Reactor实现了Runnable接口,为多线程做准备(实际应用中未必要使用多线程,很多时候使用单线程);...
2018-07-27 09:00:13 255
原创 Reactor模式是什么
一、Reactor模式是什么反应器设计模式(Reactorpattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。二、什么场景下使用Reactor模式?对于高并发系统,常会使用Reac...
2018-07-26 09:22:21 16632 3
原创 Reactor模式是什么_晏无心_新浪博客
一、Reactor模式是什么反应器设计模式(Reactorpattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。二、什么场景下使用Reactor模式?对于高并发系统,常会使用Reactor模式,其代...
2018-07-26 09:22:21 106
原创 同步非阻塞IO例子_晏无心_新浪博客
同步非阻塞IO是指在进行IO读写时,可以立即返回,不用阻塞等待read、write完全结束。java实现同步非阻塞IO需要使用JavaNIO技术。先来看server端:使用iavanio的ServerSocketChannel,设置serverChannel.configureBlocking(true);是为了方便测试,serverSocket阻塞的等待客户端的连接,连...
2018-07-20 15:24:44 280
原创 同步阻塞IO简单例子_晏无心_新浪博客
同步阻塞IO是最基本的IO操作。直接来看例子。先看Server端:启动一个ServerSocket等待接收Client端的连接,接收到消息后再向客户端发送消息。再来看Client端:Socket连接ServerSocket,先向server发送消息,再接收server端的回复。从这里可以看出,client端在向server端发送消息接收消息进行IO操作时,主线程并不能进行...
2018-07-13 15:40:50 225
原创 常见的IO模型
一、服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:1.同步阻塞IO(BlockingIO):即传统的IO模型。2.同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(NewIO)库。3.IO多路复用(IOMultiple...
2018-07-12 15:20:34 2130
原创 常见的IO模型_晏无心_新浪博客
一、服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:1.同步阻塞IO(BlockingIO):即传统的IO模型。2.同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(NewIO)库。3.IO多路复用(IOMultiplexing):即经...
2018-07-12 15:20:34 122
原创 RMI和Spring整合_晏无心_新浪博客
现在大多数的项目都使用了spring框架,RMI可以很方便的和Spring进行整合,由spring来管理bean的实例化和端口的注册、查找。需要引入spring JAR包:在bookRmi项目里添加spring.xml:RMI和Spring整合后,接口不需要再继承Remote接口,接口方法也不需要强制抛出RemoteException异常。获取spring上下文,启...
2018-07-11 14:57:15 129
原创 RPC的简单例子和理解_晏无心_新浪博客
RPC,远程过程调用,目的是实现调用远程的方法和调用本地方法一样,开发者可以通明的使用,感觉不到远程调用的存在。自己写了个RPC的简单例子,依赖于http协议,采用springmvc实现restfulwebservice,使用json进行序列化与反序列化。新建一个reader maven项目:接口Book:接口中三个方法,都是queryBook(),参数个数不同。Lo...
2018-07-09 15:54:33 240
原创 RPC的初浅理解
RPC(Remote ProcedureCall)远程过程调用。RPC这个词在分布式系统或是远程调用中听到过许多,但对于RPC到底是什么,很容易理解的不太清晰。在网上也百度过很多,说法不一,还有很多人问RPC和webapi或是MVCController的区别,实际上这两种压根不是一个概念。RPC,远程过程调用,肯定涉及到远程,那么,远程的概念到底是什么,个人理解...
2018-07-09 09:31:15 634
原创 RPC的初浅理解_晏无心_新浪博客
RPC(Remote ProcedureCall)远程过程调用。RPC这个词在分布式系统或是远程调用中听到过许多,但对于RPC到底是什么,很容易理解的不太清晰。在网上也百度过很多,说法不一,还有很多人问RPC和webapi或是MVCController的区别,实际上这两种压根不是一个概念。RPC,远程过程调用,肯定涉及到远程,那么,远程的概念到底是什么,个人理解是不同的进程。...
2018-07-09 09:31:15 99
原创 dubbo的需求,为什么会出现dubbo,为什么要使用dubbo_晏无心_新浪博客
RMI:(Remote MethodInvocation)远程方法调用Hessian:一个轻量级的remotingonhttp工具,使用简单的方法提供了RMI的功能RMI和Hessian都是RPC的一种实现方式。如果只是简单的配置URL来处理应用与应用之间的远程调用,当远程调用交互越来越多时,URL配置会变得非常庞大,不利于管理。这个时候将配置URL这一部分功能抽出来...
2018-07-06 09:05:47 102
原创 初识dubbo_晏无心_新浪博客
互联网技术发展的很快。想起刚毕业那会,大多数公司还在使用EJB,spring和maven还没有完全的普及。在公司的第一个项目,就是将技术框架从EJB变为spring,项目的搭建也开始使用maven。那时的mvc还在使用struts1,页面大多数在使用JSP开发。再往后几年,struts2和springmvc使用的越来越多,spring框架几乎成了大多数公司的首选,前端技术JSP已...
2018-07-02 18:46:42 88
原创 springmvc中的设计模式---模版方法模式_晏无心_新浪博客
springmvc中大量使用了模版方法模式。一、模版方法模式完成某一个功能,有几个固定的步骤,但每个步骤的实现根据具体对象的不同,实现的细节也不同。模板方法模式可以让具体的实现细节由子类来完成,而在父类中定义好骨架。二、springmvc中的模板方法模式springmvc中的HandlerMapping、HandlerAdapter、ArgumentResolver、ViewR...
2018-06-29 10:27:15 219
原创 springmvc中的设计模式---适配器模式_晏无心_新浪博客
springmvc的基本流程在之前的文章里都大致分析完了,接下来总结下springmvc中运用了哪些设计模式。一、设计模式什么是设计模式,通俗来讲,就是是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。它是软件设计、系统设计中的一种解决方案。有点类似围棋中的起手定式。围棋中一般开局中边角的下法都是固定的,对手下出一步棋,接下来本方的落子实际上已经固定了,只有这样...
2018-06-28 14:44:13 162
原创 springmvc与thymeleaf集成_晏无心_新浪博客
springmvc没有提供thymeleafViewResolver,需要引入jar包:在springmvc.xml里进行配置:这里需要注意,ThymeleafViewResolver的viewNames属性如果配置了,那么handler返回的viewName,必须带上.html,如果不带,不能被ThymeleafViewResolver解析。如果要带上,则又和Spring...
2018-06-27 20:22:51 143
原创 springmvc集成freemarker_晏无心_新浪博客
springmvc使用FreeMarkerViewResolver来处理ModelAndView,将页面渲染交给FreeMarkerView来处理。在springmvc.xml里进行配置:可以通过配置FreeMarkerConfigurer对freemarkerViewResolver进行一些配置。需要引入新的JAR包,不然启动会报错:添加ftl格式的页面文件:...
2018-06-27 10:33:05 85
原创 springmvc的InternalResourceViewResolver解析_晏无心_新浪博客
springmvc在处理handler的返回值之后,将由InternalResourceViewResolver进行解析,获取视图View,最终调用view.render进行页面渲染。回顾下流程:DispatcherServlet:InternalResourceViewResolver是springmvc默认加载的viewResolver,它主要是处理jsp页面的映射...
2018-06-26 10:40:10 291
原创 springmvc返回xml、json格式的数据_晏无心_新浪博客
springmvc在对handler的返回值进行处理后,会交给视图处理。对于返回json、xml格式的数据,应该是采用response.write的方式。先来看具体的handler:需要添加@ResponseBody注解,在@RequestMapping注解里,设置produces属性值,不设置的话,如果在springmvc.xml里同时配置了xml和json的HttpMess...
2018-06-25 14:59:00 126
原创 springmvc的ModelAndViewMethodReturnValueHandler解析_晏无心_新浪博客
来看supportsReturnType()方法:支持返回值类型是ModelAndView。handleReturnValue()方法:直接将handler返回值转换成ModelAndView类型,判断mav的view是否是String类型:分别做处理,将view或viewName设置到mavContainer,同时判断是否是重定向,做相应处理。来看具体的handler...
2018-06-22 14:42:00 163
原创 springmvc的ViewNameMethodReturnValueHandler解析_晏无心_新浪博客
ViewNameMethodReturnValueHandler可以处理handler的返回值类型是void和String类型的:再来看handleReturnValue()方法:将String类型的值作为ViewName设置到mavContainer;判断viewName是否是重定向,如果是,设置mavContainer重定向标识为true。来看具体的handler:...
2018-06-22 14:28:31 149
原创 springmvc对handler的返回值处理_晏无心_新浪博客
前面的文章分析了springmvc对http请求参数解析绑定到handler的参数的处理,接下来开始分析springmvc对handler的返回值的处理。在之前分析过的ServletInvocableHandlerMethod里,会调用invokeAndHandle()方法:在这里通过,这里会直接返回null。否则如果handler没有做处理直接返回null,接下来处理会报出异常。...
2018-06-22 09:52:46 214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人