Spring Data JPA 与 MyBatis简单对比

Spring Data JPA 与 MyBatis对比 Spring Data JPA是Spring Data的子模块。使用Spring Data,使得基于“repositories”概念的JPA实现更简单和容易。Spring Data JPA的目标是大大简化数据访问层代码的编码。作为使用者,我们只需要编写自己的repository接口,接口中包含一些个性化的查询方法,Spring Data JPA将自动实现查询方法。 JPA默认使用hibernate作为ORM实现,所以,一般使用Spring Data JPA即会使用hibernate。我们再看看hibernate的官方概念,Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis…

Continue Reading →

Spring Cloud 是什么?

简介 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。 Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 目前最新版本:Dalston.SR3 官网:http://projects.spring.io/spring-cloud/ 特性 Spring Cloud专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖。 分布式/版本化配置 服务注册和发现 路由 service – to – service调用…

Continue Reading →

Spring Boot干货系列:(一)优雅的入门篇

前言 Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术储备。 正文 首先声明,Spring Boot不是一门新技术,所以不用紧张。从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。 Spring Boot精要 Spring将很多魔法带入了Spring应用程序的开发之中,其中最重要的是以下四个核心。 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。 Actuator:让你能够深入运行中的Spring…

Continue Reading →

Shiro的SessionListener

1、创建 session和销毁session的时机 1、创建session的时候会附带着创建一个cookie,它的MaxAge为-1,也就是说只能存在于内存中。当浏览器端禁用cookie时,这个cookie依然会被创建。 2、当浏览器提交的请求中有jsessionid参数或cookie报头时,容器不再新建session,而只是找到先前的session进行关联。这里又分为两种情况: 1)使用jsessionid。该值若能与现有的session对应,就不创建新的session,否则,仍然创建新的session。 2)使用cookie。该值若能与现有的session对应,也不创建新的session;但若没有session与之对应(就如上面的重启服务器之后)容器会根据cookie信息恢复这个与之对应的session,就好像是以前有过一样。 3、session何时被销毁? 当我们关闭浏览器,再打开它,连接服务器时,服务器端会分配一个新的session,也就是说会启动一个新的会话。那么原来的session是不是被销毁了呢? 通过实现一个SessionListener可以发现,当浏览器关闭时,原session并没有被销毁(destory方法没有执行),而是等到timeout到期,才销毁这个session。关闭浏览器只是在客户端的内存中清除了与原会话相关的cookie,再次打开浏览器进行连接时,浏览器无法发送cookie信息,所以服务器会认为是一个新的会话。因此,如果有某些与session关联的资源想在关闭浏览器时就进行清理(如临时文件等),那么应该发送特定的请求到服务器端,而不是等到session的自动清理(默认与服务器无交互半小时消亡)。 2、Shiro配置文件增加监听类 <!– 会话管理器 –> <bean id=”sessionManager” class=”org.apache.shiro.web.session.mgt.DefaultWebSessionManager”> <property name=”globalSessionTimeout” value=”3600000″/> <property…

Continue Reading →

Spring自启动监听配置

进行以下配置后,当系统自启动完成后将加载StartupListener程序。 一、web.xml配置 <listener> <description>自定义spring启动监听器</description> <listener-class>package.web.listener.StartupListener</listener-class> </listener> 二、示例代码 import org.springframework.web.context.ContextLoaderListener; /** * 描述 继承spring的contextLoad监听器 * * @author Harley Hong * @version…

Continue Reading →

Spring加载resource时classpath*:与classpath:的区别

前言 classpath即为java文件编译之后的class文件的编译目录 解释classes含义: 1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml 2.存放模板文件 eg.actionerror.ftl 3.存放class文件 对应的是项目开发时的src目录编译文件 Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件.classpath*:的出现是为了从多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件. 一、例子 比如 resource1.jar中的package ‘com.test.rs’ 有一个 ‘jarAppcontext.xml’ 文件,内容如下: <bean…

Continue Reading →