Code Monkey home page Code Monkey logo

framework's Introduction

framework

SpringMVC+Spring+Mybatis+Redis+Postgresql+maven


##概述 经过一段时间架搭建,框架基本成型了。Springmvc+Spring+Mybatis+Redis+Postgresql通过maven进行项目的管理。 之前觉得网上有大量的资料,照猫画虎,搭建这样一套框架应该不会很难。没想到实际去操作的时候就会发现各种问题。 网上的资料好多都过期了,对一些问题的处理要么是一笔带过;要买就是直接忽略了(可能需求没有涉及到)。 大家都知道spring框架在整个jee项目占着举足轻重的地位;而后起之秀Mybatis,虽功能与Hibernate相比谈不上强大, 但是其入门简单,功能齐全对一般项目完全能够胜任。Postgresql作为功能最强大的开源数据库, 再加上其较强的稳定性成为了一些项目的最佳选择。Redis相对于memcache而言, 其数据的永久保存功能也兼顾了作为项目NoSQL数据库的功能,再加上拓展功能“对象的序列化及反序列化”, 有的人甚至感慨:数据库Redis就够了(个人觉得业务比较简单的话Only Redis is a best choice)。


##简单的说明 对于Spring和Mybatis的基本用法,此处就不再赘述。 demo中MyBatis并未用到Mapping.xml而是通过Annotation的方式实现。但是我收集了一些关于annotation替代xml的方法。 常用替换。 demo中用的是postgresql,所以比较有区别的地方在于执行Insert语句后自增主键的返回。 详细解决方法点击这里, 贴子中对各种解决方法的各种情况都做了比较好的说明,笔者也亲自试了试,情况和贴子网友们反映的情况类似。 demo中对redis的使用分了两种情况。首先是作为NoSql数据库(用用户注册后token的生成作为栗子); 再者是作为数据库查询内容的缓存及与Mybatis的整合。具体整合方式也有代码实现(但是最后发现Mybatis有官方整合方式), 然后笔者查询了一下memcache(另外一种常用的K-V缓存)与Mybatis整合,官方也给出了jar包。 但是需要特别注意的地方。Redis可否同时作为NoSql数据库(普通缓存)及关系型数据库缓存???这个问题笔者大概想了一下。 如果你的项目不会出现服务器集群,数据库及缓存分布式的情况,我想上述情况是完全可以的。因为只有一台服务器, 而且上面集成了所有的服务,不会出现因服务不独立而出现的情况。相反,当并发量过高时,为了将各个服务的性能发挥到最大, 首先就必须使其独立,也就是说一台服务器或者容器只提供一种服务,数据库服务器、缓存服务器、业务逻辑服务器。 而数据库缓存需要和缓存服务器同在一处,此时如果公用一个Redis就会出现问题了;另外由于两种的处理逻辑可能存在差异, 就导致主从不一致,也会出现问题;再则,Redis作为NoSql后期的负载均衡可通过键的hashcode进行分发, 这一点数据库缓存根本不可能做到......不过倒是推荐使用memcache作为数据库缓存,memcache的好处这里就不在提及, 感兴趣的话大家可以去了解一下。不过Mybatis官方也提供了和memcache整合的jar包,可以直接饮用稍微配置一下就行了。 还有关键的事务控制,demo中用的是spring-tx进行管理,很方便,直接在类或者方法上面使用annotation即可。 相对于spring的aop我觉得少写了很多代码而且十分的明了。 异常的处理,这里就不得不感慨一下springmvc的exceptionhandler的方便,通过annotation将异常的处理定位到每一个controller, 这时候可以根据不同的controller对后台异常进行封装,或者根据需要进行异常的分组,极大的方便了异常的管理。 数据源使用的是阿里的druid,好像通过配置可以直接实现数据库运行状况的可视化实时监控。这一点真的非常有诱惑力!


##呵呵 1.demo中对日志机制没有完善,仅简单的引入了几个jar包,并简单的配置了一下properties; 2.demo中的例子比较简单,要实现真正的实用性还需要很多的东西; 3.另外,由于本人也是初学者,所以demo中的栗子参考了很多人的博客,这里就感谢他们的辛勤劳作了。 由于本人认知有限,文中的一些观点可能比较片面,存在比较铭明显得错误,希望有发现的游客可以直接留言指出,谢谢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.