如何整合Spring+SpringMvc+Spring Data Jpa框架
Spring、Spring MVC和Spring Data JPA是目前比较流行的Java开发框架,它们各自有自己的特点和优势。在实际开发中,将这三个框架整合到一起使用可以提高开发效率和代码质量,本文将介绍如何整合Spring、Spring MVC和Spring Data JPA框架。
1. 创建Maven工程
首先,我们需要创建一个Maven工程,用来整合这三个框架。在创建工程时,选择webapp类型,指定项目名称和版本号,然后选择创建。完成后,可以看到生成了一个标准的Maven目录结构。
2. 添加依赖
在pom.xml文件中添加以下依赖:
<!-- Spring核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.2.3.RELEASE</version> </dependency> <!-- Spring MVC依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.3.RELEASE</version> </dependency> <!-- Spring Data JPA依赖 --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>2.3.3.RELEASE</version> </dependency> <!-- 数据库依赖 --> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.persistence</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency>
以上依赖分别为Spring、Spring MVC和Spring Data JPA的核心依赖,以及数据库依赖。这些依赖可以通过Maven自动下载并管理。
3. 配置web.xml文件
在WEB-INF目录下新建web.xml文件,并添加以下配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>yourProjectName</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- 配置DispatcherServlet -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 编码过滤器 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
在上述配置中,我们配置了一个DispatcherServlet处理请求,以及一个编码过滤器,用来设置请求和响应的字符编码格式。
4. 配置Spring MVC
在classpath路径下新建一个springMVC-servlet.xml文件,并添加以下配置:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置Spring MVC -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置Spring MVC -->
<mvc:annotation-driven/>
<context:component-scan base-package="com.yourPackage"/>
<!-- 配置JSP视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 配置静态资源映射 -->
<mvc:resources mapping="/static/**" location="/static/"/>
</beans>
上述配置中,我们使用了Spring MVC的注解驱动和组件扫描功能,配置了JSP的视图解析器,以及静态资源映射。
5. 配置数据源和实体类
在src/main/resources目录下新建application.properties文件,并添加以下配置:
# 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver # JPA配置 spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update
在上述配置中,我们配置了数据库连接和JPA的配置信息,其中,spring.jpa.hibernate.ddl-auto设置为update表示每次运行时会自动更新表结构。
接下来,在com.yourPackage目录下新建一个实体类,例如User.java,代码如下:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="username")
private String username;
@Column(name="password")
private String password;
// getters and setters
}
上述代码使用了JPA的注解,定义了一个User实体类,包含id、username、password三个属性,分别对应数据库中的表字段。在User类上使用@Entity注解表示这是一个实体类,在类属性上使用@Column注解表示属性对应的表字段。
6. 配置数据访问层
在com.yourPackage目录下新建一个数据访问层接口,例如UserRepository.java,代码如下:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
上述代码使用了Spring Data JPA提供的JpaRepository接口,定义了一个UserRepository接口,用来操作User实体类的数据访问层。
7. 配置服务层和控制层
在com.yourPackage目录下新建一个服务层接口,例如UserService.java,代码如下:
public interface UserService {
List<User> findAll();
User findById(Long id);
User save(User user);
void deleteById(Long id);
}
在UserService接口的实现类中(例如UserServiceImpl.java),注入UserRepository接口,并实现UserService接口中定义的方法,以便提供数据库操作的服务。
在com.yourPackage目录下新建一个控制层类,例如UserController.java,代码如下:
`java
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public String findAll(Model model) {
List<User> userList = userService.findAll();
model.addAttribute("userList", userList);
return "user/list";
}
@GetMapping("/form")
public String form(Model model, @RequestParam(required = false) Long id) {
if (id == null) {
model.addAttribute("user", new User());
} else {
User user = userService.findById(id);
if (user != null) {
model.addAttribute("
