Spring(八)SpringBoot 集成 JPA

什么是 JPA ?

之前在 Spring Boot 工程中,一直用 Mybatis 注解方式作为持久层框架。但是 Mybatis 需要手写 SQL 语句,对于简单的项目稍显麻烦。最近发现了 JPA ,使用 JPA 我们几乎可以不用写一句 SQL 语句,非常适合 CURD 场景。JPA 是 Java Persistence API(Java持久化接口) 的缩写。JPA 让我们的应用程序以统一的方式访问持久层。JPA 是 Hibernate 的一个抽象,是一种 ORM 规范,是可以理解为是 Hibernate 功能的一个子集。

阅读更多

Spring(七)深入理解Spring MVC

我们通过 Spring Boot 来创建一个 Web 应用,发挥作用的是 Spring MVC 框架。当我们在IDE里敲入以下代码时,究竟发生了什么呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@GetMapping("/")
public String hello() {
return "login";
}

@PostMapping("/login")
public ModelAndView login(LoginData loginData) {
if (LOGIN.equals(loginData.getLogin())
&& PASSWORD.equals(loginData.getPassword())) {
return new ModelAndView("success",
Collections.singletonMap("login", loginData.getLogin()));
} else {
return new ModelAndView("failure",
Collections.singletonMap("login", loginData.getLogin()));
}
}
阅读更多

Spirng(六) IoC容器探究

Spring

Spring(一)从 传统Java Web到SpirngBoot 中对 Ioc 的概念已经有了初步认识:Spring 通过一个配置文件描述 Bean 与 Bean 之间的依赖关系,利用 Java 的类加载器和反射机制实例化 Bean 并建立 Bean 之间的依赖关系。

我们将调用类对某一接口实现类的依赖关系交由 Spring 容器管理,容器在我们需要的时候,通过注入及时地将对象进行实例化并装配好 bean,无需我们自己 new 。

除此之外,由于JDK提供的访问资源的类对底层资源并不友好,缺少从类路径或者Web容器的上下文获取资源的操作类,Spring重新设计了一个 Resource 接口,用于更强的底层资源访问能力。有了这个资源类,就可以将Spring的配置信息放在任何地方(数据库、LDAP)。而为了访问不同类型的资源,Spring还提供了一个强大的加载资源的机制,定义了一套资源加载的接口 ResourceLoader 及其实现类,可以访问包括classpath:file:http://ftp://等地址前缀资源。

这一篇具体讲讲关于 Spring Ioc的更多内容。

阅读更多

Spring(五)使用 Thymeleaf 模板引擎

thy

什么是 Thymeleaf

Thymeleaf的官方定义为

Thymeleaf is a modern server-side Java template engine for both web and standalone environments。

简单地讲,Thymeleaf 是一种现代的Java服务器端模板引擎。可以达到和JSP一样的效果,但是比起JSP对于前端测试更加友好。JSP需要运行起来才能看到效果,而 Thymeleaf 本身就是html格式,无需服务器也能看到效果。

阅读更多

Spring(四)使用 RESTful 风格

RESTful

什么是 RESTful ?

REST这个词由 Roy Thomas Fielding 在他2000年的博士论文中提出。全称是 Representational State Transfer ,这个词省略了主语 Resource,因此翻译成中文是:资源表述性状态转化。

资源(Resource)

之前在 HTTP之旅 一文中提到过,一个 Web 页面包含了很多对象,这些对象可以是 html ,可以是 JSON、XML,或者可以是图片、嵌入的视频,还可以是java小程序等等。这些对象都可以称为资源。我们通过 统一资源定位符(URI)去定位资源。

表述性(REpresentational)

正如上面提到的,资源可以用各种形式来进行表述,我们可以使用最适合资源使用者的任意形式来表述资源。资源具体呈现出来的形式,就是资源的表述性(REpresentational)。

状态转化(State Transfer)

HTTP协议是无状态协议。这意味着,资源的所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生”状态转化”(State Transfer)。

客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

简单总结:资源通过 URL 进行识别和定位,然后通过行为(即 HTTP 方法)来定义应该完成怎样的功能。

阅读更多

Spring(一)从传统Java Web到SpirngBoot

从 MVC 结构到 Web 框架

Java Web 技术日新月异,如今,我们开发 Java Web 项目都是靠框架快速搭建。然而,为什么需要框架?还得从传统的 MVC 结构说起。

传统 Model-View-Controller 架构

典型的Java Web应用架构如下:

MVC

  1. 浏览器发送 HTTP 请求到服务端,被 Controller(Servlet) 获取并进行处理(参数解析、请求转发)
  2. Controller 调用核心业务逻辑 —— Model
  3. Model 进行数据库存取操作,并将操作结果返回
  4. Controller 将业务逻辑处理结果交给View(JSP),动态输出 HTML 内容
  5. 动态生成的 HTML 内容返回到浏览器显示

封装 Servlet

在这个过程中,我们要操作 Servlet 写大量的功能代码,为了简化,我们可以把 Servlet 中经常要实现的功能封装起来并提供一层公共抽象,这样我们只要编写简单的 POJO 代码或者实现一些接口,就能完成复杂的 Web 请求的后端逻辑处理。 Spring MVC 就是这样的一个框架。它提供了一个DispacherServlet,我们只需实现 Spring MVC 提供的接口就可以完成复杂的操作,而不用写大量的 Servlet 代码。

阅读更多