小言_互联网的博客

SpringBoot+JPA+mysql实现简单的增删改查(一)---Spring Boot入门

402人阅读  评论(0)

一、环境搭建

SpringBoot项目搭建

  • 访问 http://start.spring.io/
  • 选择构建工具 Maven Project、Java、Spring Boot版本以及其它的信息。设置好之后,点击GENERATE下载项目压缩包。
  • 我使用的是Eclipse,可以File->Import->Existing Maven Project->next->选择解压后的文件夹->Finsh,成功导入到自己的工程中。
  • 导入之后可能会有红叉叉,pom.xml文件第一行出现Unknown错误,这个可能是maven插件和eclispe不兼容的原因(ps:也可以忽略,不影响整体运行)
    这样Spring Boot的环境就搭建好啦,是不是很简单。

二、配置及分析

如上图所示:Spring boot的基础结构有三个文件目录:

  • src/main/java:程序开发以及主程序入口
  • src/main/resources:配置文件
  • src/test/java:测试程序
    1)我们可以看到在src/main/java下有一个SchoolApplication.java文件,这是程序入口类SchoolApplication。在Springboot项目中我们可以通过main方法启动项目,在需要启动的主类中我们需要加入@SpringBootApplication这个注解,告诉spring boot,这个是程序的入口。
    其中
    @SpringBootApplication是一个复合注解,包括@ComponentScan@SpringBootConfiguration@EnableAutoConfiguration

  • @SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。
  • @EnableAutoConfiguration的作用启动自动的配置,@EnableAutoConfiguration注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置,比如根据spring-boot-starter-web,来判断你的项目是否需要添加了webmvc和tomcat,就会自动的帮你配置web项目中所需要的默认配置。
  • @ComponentScan扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。是以前的context:component-scan(以前使用在xml中使用的标签,用来扫描包配置的平行支持)。
    这篇相关分析写的不错,可以看看:简明易理解的@SpringBootApplication注解源码解析(包含面试提问)

2)src/main/resources下有个application.properties文件。
默认创建spring-boot项目后,会在resources目录下生成一个空的application.properties配置文件,springboot启动时加载该配置文件。
application.properties(或者application.yml)中包含系统属性、环境变量、命令参数这类信息。
我的文件配置如下:

spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
#项目端口配置
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_test?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=12345678
spring.datasource.initialSize=20
spring.datasource.minIdle=50
spring.datasource.maxActive=500
 
#Mysql数据源配置
server.port=8888
server.servlet.context-path=/schoolSystem
 
#jpa
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true

这里有一篇文章是关于Spring Boot
之Application.properties配置大全
。不需要记忆,要用什么配置,直接查一下就好了,嘿嘿,很适合我这种记性不好的人。
或者能力强的人直接看官方文档:Spring Boot Reference Documentation

3)src/test/java下可以进行一些测试。当运行 Spring Boot 应用程序测试时,它会自动的从当前测试类所在的包起一层一层向上搜索,直到找到一个@SpringBootApplication或@SpringBootConfiguration注释类为止。以此来确定如何装载 Spring 应用程序的上下文资源。只要你以合理的方式组织你的代码,你项目的主配置通常是可以被发现的。
4)有关pom.xml文件。

POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。
该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。

我的pom.xml文件如下,这些都是为后面做的项目做基础哦。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.hh</groupId>
	<artifactId>School</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>School</name>
	<description>Demo project for School Management System</description>

	<properties>
		<java.version>11</java.version>
	<!--  <java-jar-plugin.version>3.1.1</java-jar-plugin.version>-->	
	</properties>

	<dependencies>
	<!-- pom.xml 文件中默认有两个模块:
spring-boot-starter :核心模块,包括自动配置支持、日志和 YAML,如果引入了 spring-boot-starter-web web 模块可以去掉此配置,因为 spring-boot-starter-web 自动依赖了 spring-boot-starter。
spring-boot-starter-test :测试模块,包括 JUnit、Hamcrest、Mockito。 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		
<!-- pom.xml中添加支持web的模块 -->		
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- servlet依赖. -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!-- tomcat的支持.-->
        <!-- 添加如下包对JSP进行编译 包tomcat-embed-jasper被标记为已提供(provided),
        因此表明我们希望JDK或容器在运行时提供依赖项,该作用域仅在编译和测试类路径上可用,并且不可传递-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provide</scope>
        </dependency>
        <!-- mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
          	<version>8.0.19</version><!--$NO-MVN-MAN-VER$--><!-- 我装的是8.0.19版本-->
        </dependency>
        <!-- jpa-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>   

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

转载:https://blog.csdn.net/weixin_34566605/article/details/105928048
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场