文章是新一代的技术博客,你不仅可以看到开发分享高质量的内容,而且能够在线浏览源码和查看运行效果。

Spring Boot——开发新一代Spring Java应用

Spring官方网站 本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系。随着Spring 3.0的发布,Spring IO团队逐渐开始摆脱XML配置文件,并且在开发过程中大量使用“约定优先配置”(convention over configuration)的思想来摆脱Spring框架中各类繁复纷杂的配置(即时是Java Config)。 Spring Boot 正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是...

Android App的设计架构:MVC,MVP,MVVM与架构经验谈

和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计: 我的App需要应用这些设计架构吗? MVC,MVP等架构讲的是什么?区别是什么? 本文就来带你分析一下这几个架构的特性,优缺点,以及App架构设计中应该注意的问题。 1.架构设计的目的 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更容易进行后续的测试以及定位问题。但设计不能违背目的,对于不同量级的工程,具体架构的实现方式必然是不同的,切忌犯为了设计而设计,为了架构而...

基于Spring MVC的 Websocket在线聊天室

每天大家都在使用QQ等即时聊天工具,今天我们就使用Spring框架以及websocket技术在网页端简单的实现一个在线聊天的功能。 关于Spring MVC的知识这里不会详述,请大家参考 Spring MVC实战入门训练 。 添加maven依赖 在线聊天室使需要使用到的技术或者框架包括: maven作为构建工具 spring boot作为后端框架 spring websocket作为即时消息通讯工具 thymeleaf作为模板引擎 angular作为前端框架 因此,我们首先在 pom.xml 中添加上述依赖: <dependencies>...

CSS的表白:七夕巧克力心

七夕到啦!然而我是程序员,就来给程序员解决一些烦恼吧!程序员最不理解的两件事: 别人的代码 妹子的心 趁着七夕的月色,我们来搞定妹子的心吧!使用纯CSS来获得妹子的心其实并不难。。各位看官来看我的尝试: http://tianmaying.com/app/css heart/ ,如图: 既然是CSS的表白,我们便只写两行HTML: <div class="heart"><div class="message">Love</div></div>...

Spring MVC快速入门教程

今天给大家介绍一下Spring MVC,让我们学习一下如何利用Spring MVC快速的搭建一个简单的web应用。 更深入地学习Spring MVC,请大家参考 Spring MVC实战入门训练 。 参考代码请戳右上角,下载下来后可以在Eclipse或者IntelliJ中导入为一个Maven项目。 环境准备 一个称手的文本编辑器(例如Vim、Emacs、Sublime Text)或者IDE(Eclipse、Idea Intellij) Java环境(JDK 1.7或以上版本) Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令行工具可以不安装)...

整合Spring Data JPA与Spring MVC: 分页和排序

之前我们学习了 如何使用Jpa访问关系型数据库 。比较完整Spring MVC和JPA教程请见 Spring Data JPA实战入门 , Spring MVC实战入门 。 通过Jpa大大简化了我们对数据库的开发工作。但是,之前的例子中我们只提到了最简单的CRUD(增删改查)操作。实际上,Spring Data Jpa对于分页以及排序的查询也有着完美的支持,接下来,我们来学习如何通过 Pageable 来对数据库进行分页查询。 添加maven依赖 首先我们需要引入Jpa,数据库直接使用 hsqldb 内存数据库就可以了: <project xmlns="http://maven.apac...

新一代Java模板引擎Thymeleaf

Thymeleaf 是一款用于渲染XML/XHTML/HTML5内容的模板引擎。类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。与其它模板引擎相比,Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用。 Thymeleaf初探 相比于其他的模板引擎,Thymeleaf最大的特点是通过HTML的标签属性渲染标签内容,以下是一个Thymeleaf模板例子: <!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/x...

整合Spring Data JPA与Spring MVC:使用@Query标注自定义查询语句

在 使用JPA访问关系型数据库 和 Spring Data Jpa: 分页和排序 两篇文章中我们学会了如何使用Spring Data Jpa 进行简单的查询以及分页等功能,Spring Data Jpa本身所支持的功能已经非常强大了,也能够支持大部分的场景。但是,现实场景永远比想象的要复杂,有时候我们确实需要像Sql语句这样更加强大以及灵活的方式来进行查询。Spring Data Jpa 当然给我们提供了这样的方式,我们可以使用 @Query 标注轻松的使用类似sql查询的功能。今天我们来尝试一下如何使用 @Query 标注来自定义查询吧。 基础对象 Spring Data Jpa所提供的通过...

使用Spring Security进行Spring MVC的权限验证

Spring Security,这是一种基于Spring AOP和Servlet过滤器的安全框架。它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和授权。在Spring Framework基础上,Spring Security充分利用了依赖注入(DI,Dependency Injection)和面向切面技术。今天我们就来学习一下如何利用Spring security方便的进行权限验证。 添加依赖 首先还是先定义我们所需要的依赖: <dependencies>...

部署Spring Boot应用

在开发Spring Boot应用的过程中,Spring Boot直接执行 public static void main() 函数并启动一个内嵌的应用服务器(取决于类路径上的以来是Tomcat还是jetty)来处理应用请求。对于生产环境,这样的部署方式同样有效,同时Spring Boot也支持传统的部署方式——将war包放入应用服务器中启动运行。 内嵌应用服务器 在使用Maven或Gradle构建Spring Boot应用的过程中,Spring Boot插件提供了巨大的帮助,除了生命各类预定义的依赖,它还能够构建可以直接运行的jar包——包含了所有的依赖以及内嵌应用服务器。应用的分发也就变得非...

HTML5游戏系列(1):你能戳几下?

HTML5提供了很多新的语义标签,以及更加丰富的浏览器API。与此同时,移动设备优先的Web框架也大量涌现。甚至出现了很多的HTML5游戏引擎,并且可以获得相当好的性能。微信的流行,使得HTML5的应用越来越火爆。于是小编也来凑凑热闹,出品一个牛刀小试的HTML5游戏:“ 你能戳几下 ”。本文便来记述整个开发流程,非常简单!先点击右上角的“参考代码”,并下载源码,跟着小编十分钟便能开发自己的游戏! 可以来体验一把这个游戏: http://tianmaying.com/app/clicking/ 页面框架 打开后首页是这样的: 点击开始后,用户开始狂戳屏幕正中间的按钮,直到5秒的倒计时结束。最后...

基于Spring和Spring MVC实现可跨域访问的REST服务

Web应用中前端JavaScript访问后端的REST服务默认是不能跨域的,这里的域英文中叫 Origin ,有时也叫 Domain ,包含了协议( HTTP / HTTPS ),域名和端口号。不能跨域指的是,如果来自 http://abc.com:80 的JavaScript代码只能访问 http://abc.com:80 中的资源(HTTP默认端口号为80,注意端口号不同也是不同的域)。大家不妨试一试在自己的JavaScript代码中去访问Google搜索的URL,代码是不能正常运行的。 Same Origin Policy(SOP)是浏览器默认的安全模型,为什么需要SOP呢? 因为如果允...

基于Spring的微信第三方登录实现

在前几篇文章中,我们介绍了 OAuth2.0认证和授权机制讲解 ,并实现了 基于Spring的Github第三方登录 通用化的第三方登陆实现 ,之后,我们基于该通用化的框架,介绍了国内的两个比较流行的第三方登录平台: 基于Spring的新浪微博第三方登录实现 和 基于Spring的QQ第三方登录实现 。以上几个第三方登录平台都严格遵守了OAuth2.0协议。但是,近来作者发现微信的第三方登录确不是那么严格的遵守通用化的OAuth2.0协议,有些细节实现不太一样(例如获取AccessToken时其他OAuth平台用的字段名为client_id,但是微信中是appid),这就导致了之前的通用化框架...

Spring Data JPA: 为所有Repository添加自定义方法

Spring Data JPA中的Repository是接口,是JPA根据方法名帮我们自动生成的。但很多时候,我们需要为Repository提供一些自定义的实现。今天我们看看如何为Repository添加自定义的方法。 自定义Repository接口 首先我们来添加一个自定义的接口: 添加 BaseRepository 接口 BaseRepository 继承了 PagingAndSortingRepository ,这样可以保证所有Repository都有基本的增删改查以及分页等方法。 在 BaseRepository 上添加 @NoRepositoryBean 标注,这样Spring Da...

基于Spring Boot 实现定时任务

很多时候,我们有这么一个需求,需要在每天的某个固定时间或者每隔一段时间让应用去执行某一个任务。为了实现这个需求,通常我们会通过多线程来实现这个功能,但是这样我们需要自己做一些比较麻烦的工作。接下来,让我们看看如何使用Spring scheduling task简化定时任务功能的实现。 添加maven依赖 为了方便展示,我们使用Spring Boot来简化我们的Spring配置。因为我们使用的是Spring自带的Scheduling,因此我们只需要引入最进本的spring boot starter即可。 <parent>...

基于Spring的Web缓存

缓存的基本思想其实是以空间换时间。我们知道,IO的读写速度相对内存来说是非常比较慢的,通常一个web应用的瓶颈就出现在磁盘IO的读写上。那么,如果我们在内存中建立一个存储区,将数据缓存起来,当浏览器端由请求到达的时候,直接从内存中获取相应的数据,这样一来可以降低服务器的压力,二来,可以提高请求的响应速度,提升用户体验。 缓存的分类 数据库数据缓存 一般来说,web应用业务逻辑业务逻辑比较复杂,数据库繁多,要获取某个完整的数据,往往要多次读取数据库,或者使用极其复杂效率较低的SQL查询语句。为了提高查询的性能,将查询后的数据放到内存中进行缓存,下次查询时,直接从内存缓存直接返回,提高响应效率。...

Spring MVC中使用Thymeleaf模板引擎

新一代Java模板引擎Thymeleaf 一定让你惊叹于Thymeleaf的强大,但是真正在Web应用结合Web特性使用模板引擎,还需要进行一定的配置和学习。 Thymeleaf于Spring集成 Thymeleaf除了基本的模板引擎,还提供了一套Spring集成技术使得在Spring MVC中能够使用它完全替代JSP作为模板引擎,它的功能特性如下: Spring MVC中 @Controller 中的方法可以直接返回模板名称,接下来Thymeleaf模板引擎会自动进行渲染 模板中的表达式支持Spring表达式语言(Spring EL) 表单支持,并兼容Spring MVC的数据绑定与验证机制...

HTML5游戏系列(2):装B达人

小编的第一款HTML游戏:“ 你能戳几下? ”引起了微信圈不错的反响,这更加激发了“天码营”团队以及小编本人的斗志。此次小编带来了可玩性更强的HTML5游戏:“装B达人”!还没有玩过的可以关注天码营公众号“TMY EDE”并获取最新文章即可得到游戏链接。也可以直接打开链接: http://tianmaying.com/app/collect b/ 下面便开始详述“装B达人”是怎样炼就的!先上图,一睹为快: 简介 游戏流程 B会不断地从天而降,玩家可以移动篮子来装B,我们会给出装B计数。一旦B已经接触地面在本次装B失败,游戏结束(Game Over~)。 技术框架 本游戏的实现借助于HTML5提...

Spring MVC拦截器

Spring WebMvc框架中的Interceptor,与Servlet API中的Filter十分类似,用于对Web请求进行预处理/后处理。通常情况下这些预处理/后处理逻辑是通用的,可以被应用于所有或多个Web请求,例如: 记录Web请求相关日志,可以用于做一些信息监控、统计、分析 检查Web请求访问权限,例如发现用户没有登录后,重定向到登录页面 打开/关闭数据库连接——预处理时打开,后处理关闭,可以避免在所有业务方法中都编写类似代码,也不会忘记关闭数据库连接 Spring MVC请求处理流程 上图是Spring MVC框架处理Web请求的基本流程,请求会经过 DispatcherServ...

在Docker容器中运行Spring Boot应用

Spring Boot简化了Spring应用的开发过程,遵循约定优先配置的原则提供了各类开箱即用(out of the box)的框架配置。另一方面,Spring Boot还具备将代码直接构建为可执行jar包的能力,这个jar包是一个可以独立运行的部署单元。基于以上特性,现在普遍认为 Spring Boot 提供了一种快速构造 微服务(Micro Service) 的能力。 Docker与Spring Boot Docker 是一种Linux容器的实现,Linux容器是基于进程的轻量级资源隔离技术,每一个容器对应操作系统中的一个进程,但是它又会有自己的网络空间、文件系统、PID等。Docker...

Web开发技术发展历史

Web的诞生 提到Web,不得不提一个词就是“互联网”。Web是World Wide Web的简称,中文译为万维网。“万维网”和我们经常说的“互联网”是两个联系极其紧密但却不尽相同的概念。今天“互联网”三个字已经承载了太多的内涵,提到互联网,我们通常想到的一种战略思维,或者是一种颠覆传统的商业模式。抛开那些纷繁凌乱的商业化概念,回归技术本身,互联网就是指通过TCP/IP协议族互相连接在一起的计算机网络。而Web是运行在互联网上的一个超大规模的分布式系统。Web设计初衷是一个静态信息资源发布媒介,通过超文本标记语言(HTML)描述信息资源,通过统一资源标识符(URI)定位信息资源,通过超文本转移...

Swift实现自定义的UITableViewCell

看这篇经验之前,你应该知道 UITableView 和 UITableViewController 最基础的知识了,还不了解的戳 这里 。 今天我们如何来定义和使用一个自定义的UITableViewCell。我们将制作一个Todo列表,每个Todo前面应该显示一个Checkbox,通过勾选Checkbox来表示完成或者重新打开Todo,这个应用我们命名为 Lean ,如下图所示: ...

Spring Boot使用Redis进行消息的发布订阅

今天来学习如何利用Spring Data对Redis的支持来实现消息的发布订阅机制。发布订阅是一种典型的异步通信模型,可以让消息的发布者和订阅者充分解耦。在我们的例子中,我们将使用 StringRedisTemplate 来发布一个字符串消息,同时基于 MessageListenerAdapter 使用一个POJO来订阅和响应该消息。 提示 事实上,RedisRedis 不仅提供一个NoSQL数据库,同时提供了一套消息系统。 环境准备 开发环境: IDE+Java环境(JDK 1.7或以上版本) Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令...

Android实现ActionBar

Action Bar是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用户动作、界面导航等功能。使用ActionBar的好处是,它可以给提供一种全局统一的UI界面,使得用户在使用任何一款软件时都懂得该如何操作,并且ActionBar还可以自动适应各种不同大小的屏幕。下面是一张使用ActionBar的界面截图: ...

反馈意见