一个简单的springboot应用搭建过程

今天快速搭建一个springboot基础应用,一起来学习吧。

0、基础环境

  1. jdk: 1.8
  2. ide: idea 2021
  3. maven: 3.8.1
  4. springboot:2.4.2
  5. mysql:8.x

1、创建新项目

利用idea创建基于maven的java项目,这个不用介绍了吧。输入groupId和项目名称完成即可。

2、引入springboot依赖

项目创建完成后,打开pom.xml,加入如下依赖。

  	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

3、创建启动类

在新建的包下,创建一个类,名字随便。我就用Application这个名字了。这是个固定写法,复制就行。

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

4、创建application.yml配置文件

在resource文件夹下,创建application.yml文件,内容如下:

server:
  port: 8080
  error:
    include-message: always

spring:
  application:
    name: springboot-test

ok!, 启动试试,是不是很简单。别着急,还没完。不过这个时候已经是可以运行的应用了,虽然它很简单,但任何复杂的项目不都是一步步构建起来的吗?咱们继续。

5、加入JPA支持

5.1、引入依赖

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
	
		<!--数据库用mysql,因为springboot已经依赖了,就不用写version标签了-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

5.2、写实体类

首先创建包,当然随便写也行,但最好符合常规。代码如下:

@Entity
@Table(name = "t_user")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Integer id;

    @Column(name = "name")
    private String name;

    @Column(name = "sex")
    private Boolean sex;
}

5.3、写jpa操作的接口类

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

不用多写,常用的crud方法已经定义在接口里了,有个性需求在这个接口里自定义。不多说了,关于详细的JPA的用法请查看相关文档。另外,每次说到这里,总有人跳出来和我争论,mybatis多好多好,为什么要用jpa,这里不做讨论,有兴趣的同学去搜索。

5.4、启动类上加注解

@SpringBootApplication
@EntityScan(basePackages = "org.example.jackie.sbt.entity")
@EnableJpaRepositories(basePackages = "org.example.jackie.sbt.repository")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

仔细看,我加了两个注解,@EntityScan和@EnableJpaReposotories,里面的basePackages都指向了他们对应的包。你按自己的包修改。

5.5、修改配置文件

这里的配置文件,在上面的基础上,添加数据库的配置和jpa的配置。这里贴上所有的配置。

server:
  port: 8080
  error:
    include-message: always

spring:
  application:
    name: springboot-test
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/my_coupon?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver

    hikari:
      pool-name: StrasCouponHikari
      connection-timeout: 5000
      idle-timeout: 30000
      maximum-pool-size: 10
      minimum-idle: 5
      max-lifetime: 60000
      auto-commit: true
    jpa:
      show-sql: true
      hibernate:
        ddl-auto: none
      properties:
        hibernate.format_sql: true
        hibernate.show_sql: true
      open-in-view: false

完了,再启动试试,要是没保存,至少说明你没有错误。

6、单元测试

6.1、写jpa的测试类

@ExtendWith(SpringExtension.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@TestPropertySource("classpath:test.properties")
public class UserRepositoryTest {

    @Test
    public void testUserAdd() {
        System.out.println("-----");
        User user = new User();
        user.setName("张三");
        user.setSex(Boolean.FALSE);
        user = userRepository.save(user);

        Optional<User> user2 = userRepository.findById(user.getId());

        assertThat(user2.get().getName().equals("张三"));
    }

    @Autowired
    private UserRepository userRepository;
}

注意,测试类写到测试的文件夹中,并且和被测试类在同样的包中。

6.2、test.properties内容

pring.datasource.url=jdbc:mysql://localhost:3306/my_coupon?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

其实就是配置了mysql的连接参数。

6.3、添加测试依赖

 		 <!--test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <scope>test</scope>
        </dependency>

7、总结

以上从头到尾搭建了一个最简单的springboot应用,虽然很小,但是从连接数据库,到repository层的测试,内容也不少,希望大家有自己的收获。

相关推荐

  1. 一个简单springboot应用过程

    2024-07-19 21:22:05       17 阅读
  2. 华纳云:如何一个简易文件服务器?

    2024-07-19 21:22:05       46 阅读
  3. 使用python脚本一个简单ansible集群

    2024-07-19 21:22:05       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 21:22:05       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 21:22:05       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 21:22:05       57 阅读
  4. Python语言-面向对象

    2024-07-19 21:22:05       68 阅读

热门阅读

  1. POST请求查询参数神奇失效的一次神奇bug之旅

    2024-07-19 21:22:05       16 阅读
  2. 智能家居和智能家电有什么区别?

    2024-07-19 21:22:05       21 阅读
  3. Leetcode 9. 回文数

    2024-07-19 21:22:05       21 阅读
  4. final字段总结

    2024-07-19 21:22:05       15 阅读
  5. antd drawer extra中按钮点击事件获取子组件的数据

    2024-07-19 21:22:05       18 阅读
  6. HTML简介

    2024-07-19 21:22:05       22 阅读
  7. 2025秋招LLM大模型多模态面试题(五)- 位置编码

    2024-07-19 21:22:05       17 阅读
  8. 单例模式~

    2024-07-19 21:22:05       21 阅读
  9. python的mixin设计模式

    2024-07-19 21:22:05       21 阅读
  10. vue中v-if和v-for

    2024-07-19 21:22:05       19 阅读