如何整合Spring+SpringMvc+Spring Data Jpa框架

发布时间:2022-01-14 09:34:49 作者:小新
来源:亿速云 阅读:323

如何整合Spring+SpringMvc+Spring Data Jpa框架

目录

  1. 引言
  2. Spring框架概述
  3. Spring MVC框架概述
  4. Spring Data JPA框架概述
  5. 项目搭建
  6. Spring与Spring MVC整合
  7. Spring与Spring Data JPA整合
  8. Spring MVC与Spring Data JPA整合
  9. 项目实战
  10. 总结

引言

在现代Java企业级应用开发中,Spring框架已经成为了事实上的标准。Spring框架提供了全面的基础设施支持,使得开发者能够专注于业务逻辑的实现,而不必过多关注底层的技术细节。Spring MVC是Spring框架中的一个模块,专门用于构建Web应用程序。Spring Data JPA则是Spring Data项目的一部分,它简化了JPA(Java Persistence API)的使用,使得开发者能够更加方便地进行数据库操作。

本文将详细介绍如何将Spring、Spring MVC和Spring Data JPA这三个框架整合在一起,构建一个完整的Java Web应用程序。我们将从框架的概述开始,逐步讲解如何搭建项目、整合各个框架,并通过一个实战项目来演示整个流程。

Spring框架概述

Spring框架是一个开源的Java平台,它提供了全面的基础设施支持,用于构建企业级应用程序。Spring框架的核心是IoC(Inversion of Control,控制反转)容器,它负责管理应用程序中的对象生命周期和依赖关系。通过IoC容器,开发者可以将对象的创建和依赖关系的管理交给Spring框架,从而降低代码的耦合度。

Spring框架的主要特点包括:

Spring MVC框架概述

Spring MVC是Spring框架中的一个模块,专门用于构建Web应用程序。Spring MVC基于MVC(Model-View-Controller)设计模式,将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分,从而实现了业务逻辑、数据展示和用户交互的分离。

Spring MVC的主要特点包括:

Spring Data JPA框架概述

Spring Data JPA是Spring Data项目的一部分,它简化了JPA(Java Persistence API)的使用,使得开发者能够更加方便地进行数据库操作。JPA是Java EE规范中的一部分,它定义了一套标准的API,用于将Java对象映射到数据库表中。

Spring Data JPA的主要特点包括:

项目搭建

在开始整合Spring、Spring MVC和Spring Data JPA之前,我们首先需要搭建一个基本的项目结构。我们将使用Maven来管理项目的依赖,并使用Spring Boot来简化项目的配置。

1. 创建Maven项目

首先,我们创建一个Maven项目。可以使用IDE(如IntelliJ IDEA或Eclipse)来创建项目,也可以使用命令行工具来创建项目。

mvn archetype:generate -DgroupId=com.example -DartifactId=spring-mvc-jpa-demo -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

2. 添加Spring Boot依赖

pom.xml文件中,添加Spring Boot的依赖:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

3. 配置Spring Boot

src/main/resources目录下,创建application.properties文件,并添加以下配置:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true

4. 创建Spring Boot主类

src/main/java/com/example目录下,创建SpringMvcJpaDemoApplication.java文件,并添加以下代码:

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringMvcJpaDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringMvcJpaDemoApplication.class, args);
    }
}

5. 运行项目

在命令行中运行以下命令,启动Spring Boot应用程序:

mvn spring-boot:run

此时,Spring Boot应用程序已经启动,并且可以通过http://localhost:8080访问。

Spring与Spring MVC整合

在Spring Boot中,Spring和Spring MVC的整合已经由Spring Boot自动完成。我们只需要在项目中添加相应的依赖,并配置Spring MVC的相关参数即可。

1. 配置Spring MVC

application.properties文件中,添加以下配置:

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

2. 创建Controller

src/main/java/com/example/controller目录下,创建HomeController.java文件,并添加以下代码:

package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/")
    public String home() {
        return "home";
    }
}

3. 创建视图

src/main/webapp/WEB-INF/views目录下,创建home.jsp文件,并添加以下代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h1>Welcome to Spring MVC + Spring Data JPA Demo</h1>
</body>
</html>

4. 运行项目

重新启动Spring Boot应用程序,并访问http://localhost:8080,你将看到home.jsp页面显示的内容。

Spring与Spring Data JPA整合

Spring Data JPA的整合也非常简单,我们只需要在项目中添加相应的依赖,并配置JPA的相关参数即可。

1. 配置JPA

application.properties文件中,添加以下配置:

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

2. 创建实体类

src/main/java/com/example/model目录下,创建User.java文件,并添加以下代码:

package com.example.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}

3. 创建Repository接口

src/main/java/com/example/repository目录下,创建UserRepository.java文件,并添加以下代码:

package com.example.repository;

import com.example.model.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

4. 创建Service类

src/main/java/com/example/service目录下,创建UserService.java文件,并添加以下代码:

package com.example.service;

import com.example.model.User;
import com.example.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<User> findAll() {
        return userRepository.findAll();
    }

    public User save(User user) {
        return userRepository.save(user);
    }
}

5. 创建Controller

src/main/java/com/example/controller目录下,创建UserController.java文件,并添加以下代码:

package com.example.controller;

import com.example.model.User;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public String listUsers(Model model) {
        model.addAttribute("users", userService.findAll());
        return "users";
    }

    @PostMapping("/users")
    public String addUser(User user) {
        userService.save(user);
        return "redirect:/users";
    }
}

6. 创建视图

src/main/webapp/WEB-INF/views目录下,创建users.jsp文件,并添加以下代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Users</title>
</head>
<body>
    <h1>Users</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
        </tr>
        <c:forEach items="${users}" var="user">
            <tr>
                <td>${user.id}</td>
                <td>${user.name}</td>
                <td>${user.email}</td>
            </tr>
        </c:forEach>
    </table>
    <h2>Add User</h2>
    <form action="/users" method="post">
        Name: <input type="text" name="name"><br>
        Email: <input type="text" name="email"><br>
        <input type="submit" value="Add User">
    </form>
</body>
</html>

7. 运行项目

重新启动Spring Boot应用程序,并访问http://localhost:8080/users,你将看到用户列表页面,并且可以添加新用户。

Spring MVC与Spring Data JPA整合

在前面的步骤中,我们已经将Spring MVC和Spring Data JPA整合在一起。Spring MVC负责处理HTTP请求,并将请求参数绑定到控制器方法的参数上。Spring Data JPA负责处理数据库操作,并将结果返回给Spring MVC。

1. 处理表单提交

UserController.java中,我们通过@PostMapping注解来处理表单提交。当用户提交表单时,Spring MVC会将表单数据绑定到User对象上,并调用UserServicesave方法将用户保存到数据库中。

2. 显示用户列表

UserController.java中,我们通过@GetMapping注解来处理用户列表的显示。当用户访问/users路径时,Spring MVC会调用UserServicefindAll方法获取所有用户,并将用户列表传递给视图。

3. 使用Thymeleaf模板引擎

在前面的示例中,我们使用了JSP作为视图技术。实际上,Spring Boot默认支持Thymeleaf模板引擎。我们可以将视图文件改为Thymeleaf模板,从而获得更好的开发体验。

src/main/resources/templates目录下,创建users.html文件,并添加以下代码:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Users</title>
</head>
<body>
    <h1>Users</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
        </tr>
        <tr th:each="user : ${users}">
            <td th:text="${user.id}"></td>
            <td th:text="${user.name}"></td>
            <td th:text="${user.email}"></td>
        </tr>
    </table>
    <h2>Add User</h2>
    <form action="/users" method="post">
        Name: <input type="text" name="name"><br>
        Email: <input type="text" name="email"><br>
        <input type="submit" value="Add User">
    </form>
</body>
</html>

4. 修改Controller

UserController.java中,将视图名称改为users

@GetMapping("/users")
public String listUsers(Model model) {
    model.addAttribute("users", userService.findAll());
    return "users";
}

5. 运行项目

重新启动Spring Boot应用程序,并访问http://localhost:8080/users,你将看到使用Thymeleaf模板引擎渲染的用户列表页面。

项目实战

在前面的步骤中,我们已经完成了Spring、Spring MVC和Spring Data JPA的整合。接下来,我们将通过一个实战项目来演示如何将这些框架应用到实际开发中。

1. 项目需求

我们将开发一个简单的博客系统,用户可以发布博客文章,并查看所有博客文章的列表。

2. 创建实体类

src/main/java/com/example/model目录下,创建Post.java文件,并添加以下代码:

package com.example.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.util.Date;

@Entity
public class Post {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    private String content;
    private Date createdAt;

    // Getters and Setters
}

3. 创建Repository接口

src/main/java/com/example/repository目录下,创建PostRepository.java文件,并添加以下代码:

package com.example.repository;

import com.example.model.Post;
import org.springframework.data.jpa.repository.JpaRepository;

public interface PostRepository extends JpaRepository<Post, Long> {
}

4. 创建Service类

src/main/java/com/example/service目录下,创建PostService.java文件,并添加以下代码:

package com.example.service;

import com.example.model.Post;
import com.example.repository.PostRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class PostService {

    @Autowired
    private PostRepository postRepository;

    public List<Post> findAll() {
        return postRepository.findAll();
    }

    public Post save(Post post) {
        post.setCreatedAt(new Date());
        return postRepository.save(post);
    }
}

5. 创建Controller

src/main/java/com/example/controller目录下,创建PostController.java文件,并添加以下代码:

package com.example.controller;

import com.example.model.Post;
import com.example.service.PostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class PostController {

    @Autowired
    private PostService postService;

    @GetMapping("/posts")
    public String listPosts(Model model) {
        model.addAttribute("posts", postService.findAll());
        return "posts";
    }

    @PostMapping("/posts")
    public String addPost(Post post) {
        postService.save(post);
        return "redirect:/posts";
    }
}

6. 创建视图

src/main/resources/templates目录下,创建posts.html文件,并添加以下代码:

”`html <!DOCTYPE html> Posts

Posts

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:如何应用SuperIO和SSIO构建系统

下一篇:springboot整合quartz定时任务框架的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
ID Title Content Created At