从零开始构建Spring Boot项目时,你需要哪些包?

简介: 从零开始构建Spring Boot项目时,你需要哪些包?

 一、springboot工程要包含有的package包

一般一个基础的spring工程要包含有一下几个package包!

  1. com.example.democom.example.<projectname>: 这个包通常是默认的包名,用来存放应用程序的入口类。
  2. com.example.demo.controller: 用于存放控制器(Controller)类。
  3. com.example.demo.service: 用于存放服务(Service)类。
  4. com.example.demo.dao: 用于存放数据访问对象(DAO)类。
  5. com.example.demo.entity: 用于存放实体类(Entity)或数据模型(Model)类。
  6. com.example.demo.config: 用于存放配置文件(Config)类。
  7. com.example.demo.util: 用于存放工具类(Util)。

需要注意的是,这些包名并不是强制要求的,可以根据具体的项目需求和实际情况进行修改。同时,在实际开发中,可能还会涉及到其他的包,如异常处理、拦截器、定时任务等。

二、核心内置导入包

在Spring Boot工程中,虽然包的命名可以自定义,但是一些核心的包是必须要有的,否则应用程序将无法正常启动。这些包包括:

  1. org.springframework.boot.autoconfigure: Spring Boot自动配置相关的包。
  2. org.springframework.boot: Spring Boot核心包。
  3. org.springframework.context: Spring上下文相关的包。
  4. org.springframework.web: Spring Web相关的包。
  5. org.springframework.data: Spring Data相关的包,用于简化数据访问层的开发。
  6. org.springframework.jdbc: Spring JDBC相关的包,用于简化JDBC的开发。
  7. org.springframework.orm: Spring ORM相关的包,用于简化ORM框架的开发。
  8. org.springframework.transaction: Spring事务相关的包,用于管理事务。

除了以上列出的包,还需要引入一些第三方库和工具包,例如数据库驱动、日志框架、JSON解析器等。这些包的引入也是根据具体的项目需求来选择的。

三、package包当中每个包的实现功能

1、entity层

在一个 Spring Boot 工程中,entity 通常指的是实体类,它是用来描述数据的一个 Java 类。在一个典型的应用程序中,实体类通常映射到数据库中的表,并且每个实例都代表数据库中的一行数据。

实体类通常包含私有成员变量和公共访问方法(getter 和 setter),用于存储和访问数据。在实体类中,成员变量通常与表中的列相对应,而访问方法则用于操作这些数据。

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "name")
    private String name;
    @Column(name = "email")
    private String email;
    // getter 和 setter 方法
}

例子中,User 类使用了 JPA 注解来描述实体类,其中 @Entity 注解表明这是一个实体类,@Table 注解指定了对应的数据库表名,@Id 注解标识了该属性为实体类的主键,@GeneratedValue 注解指定了主键生成策略,@Column 注解表示该属性与表中的列相对应。该实体类中的每个属性都有相应的 getter 和 setter 方法。

总之,实体类在 Spring Boot 应用程序中非常重要,因为它们代表了数据模型,是应用程序与数据库之间交互的基础。


2、service层

在一个Spring Boot工程中,Service层通常是用来处理业务逻辑的部分,它包含了一些方法,这些方法会被Controller层调用。Service层负责调用DAO层,实现对数据的处理和业务逻辑的实现,然后把处理结果返回给Controller层。

一般来说,Service层的方法主要包括以下几个方面:

  1. 数据处理:Service层通过调用DAO层的方法,从数据库中读取数据,并对数据进行处理,最终返回给Controller层。
  2. 业务逻辑处理:Service层会对一些业务逻辑进行处理,如订单的生成、支付、发货、退款等等。
  3. 事务管理:对于需要进行事务处理的操作,Service层负责开启和提交事务,以确保数据的一致性和完整性。
  4. 错误处理:Service层需要对一些异常情况进行处理,比如输入参数错误、数据库连接失败等等,保证程序的稳定性和可靠性。

在Service层中,一般会定义一些接口和实现类。接口定义了方法的声明,实现类则是具体实现了这些方法。这样做的好处是,使代码具有更好的可扩展性和可维护性,也方便进行单元测试。

一个简单的例子,实现了一个计算器的加法运算:

首先定义一个CalculatorService接口,定义一个add方法用于执行加法运算:

public interface CalculatorService {
    int add(int num1, int num2);
}

然后定义一个CalculatorServiceImpl类来实现这个接口,具体实现了两个整数相加的功能:

@Service
public class CalculatorServiceImpl implements CalculatorService {
    @Override
    public int add(int num1, int num2) {
        return num1 + num2;
    }
}

最后,定义一个CalculatorController类来接收请求,调用CalculatorService执行加法运算,将结果返回给前端:

@RestController
@RequestMapping("/calculator")
public class CalculatorController {
    @Autowired
    private CalculatorService calculatorService;
    @PostMapping("/add")
    public int add(@RequestParam("num1") int num1, @RequestParam("num2") int num2) {
        return calculatorService.add(num1, num2);
    }
}

上述代码中,@Service注解用于标注CalculatorServiceImpl类为Spring Bean,@RestController注解用于标注CalculatorController类为一个RESTful风格的Controller类,@PostMapping注解用于映射HTTP POST请求,@RequestParam注解用于获取请求参数。

当我们访问/calculator/add路径时,会调用CalculatorController类的add方法,该方法会调用CalculatorServiceadd方法来执行加法运算,并将结果返回给前端。


3、controller层

在 Spring Boot 中,Controller 层通常用于接收 HTTP 请求并返回响应。Controller 可以通过注解的方式将一个类标记为控制器,并指定映射的请求路径。一般来说,Controller 的主要功能是:

  1. 接收 HTTP 请求参数,并进行处理。
  2. 调用 Service 层的业务逻辑,处理业务数据。
  3. 根据业务数据生成相应的 HTTP 响应。

一个基本的 Controller 类通常包含以下部分:

  1. Controller 注解:用于标识该类是一个控制器,并指定映射的请求路径。
  2. Autowired 注解:用于注入 Service 层的依赖。
  3. RequestMapping 注解:用于指定该方法处理的 HTTP 请求路径。
  4. 方法:处理 HTTP 请求参数,并调用 Service 层的业务逻辑,生成响应数据并返回。

简单例子:

@RestController
@RequestMapping("/hello")
public class HelloController {
    @Autowired
    private HelloService helloService;
    @GetMapping("/{name}")
    public String hello(@PathVariable String name) {
        String message = helloService.sayHello(name);
        return "Hello " + message + "!";
    }
}

例子中,@RestController 注解用于标识该类是一个控制器,并使用 @RequestMapping("/hello") 注解指定了映射的请求路径。@Autowired 注解用于注入 HelloService 的依赖。@GetMapping("/{name}") 注解用于指定该方法处理的 HTTP GET 请求路径,其中 {name} 是一个占位符,表示接收一个名为 name 的路径参数。在方法体中,调用了 helloService 的 sayHello 方法,并返回了一个带有 hello 消息的字符串。


4、dao(mapper)层

在一个Spring Boot工程中,通常会使用Spring Data JPA或MyBatis等ORM框架来操作数据库。而对于这些ORM框架而言,数据访问层(Data Access Object,简称DAO)就是用来进行数据库操作的核心接口。

DAO层的主要作用是实现对数据库的增删改查操作,通常包括以下几个方面:

  1. 定义数据访问接口:DAO接口通常会定义一些方法,用于实现数据库的CRUD操作,例如insert、delete、update、select等方法。
  2. 实现数据访问接口:具体实现数据访问接口的类通常是使用Spring框架提供的JdbcTemplate、NamedParameterJdbcTemplate等类,或是使用ORM框架提供的API来实现。
  3. 提供事务管理:在进行数据库操作时,通常需要考虑事务管理。Spring框架提供了对事务管理的支持,可以通过在DAO层使用@Transactional注解来实现事务的控制。

一般来说,DAO层的代码应该具有高度的可重用性和可测试性,以便在不同的业务场景中进行复用,并方便进行单元测试等。同时,为了提高代码的可读性和可维护性,DAO层的代码应该遵循一定的设计模式和规范,例如将数据库操作和业务逻辑分离,尽可能地减少数据访问的代码和数据库交互的次数等。

简单的例子:

假设我们有一个User实体类,需要将它保存到数据库中,我们可以创建一个UserDao接口,然后创建一个实现该接口的UserDaoImpl类

UserDao.java

public interface UserDao {
    User save(User user);
}

UserDaolmpl.java

@Repository
public class UserDaoImpl implements UserDao {
    @Autowired
    private EntityManager entityManager;
    @Override
    public User save(User user) {
        entityManager.persist(user);
        return user;
    }
}

在这个例子中,我们使用了JPA(Java Persistence API)来访问数据库。UserDao接口定义了一个save方法,用于保存User对象到数据库中。UserDaoImpl类实现了该接口,使用EntityManager来执行数据库操作。

@Repository注解用于标识这是一个数据访问层的类,让Spring能够自动扫描并注册它。

在服务层或者控制层中使用UserDaoImpl类,如下:

@Service
public class UserService {
    @Autowired
    private UserDao userDao;
    public User save(User user) {
        return userDao.save(user);
    }
}

在这个例子中,我们创建了一个UserService类,使用@Autowired注解将UserDaoImpl类注入到该类中。在该类中,我们可以调用UserDaoImpl类的save方法来保存User对象到数据库中。

需要注意的是,在实际开发中,可能会使用MyBatis或者其他ORM框架来访问数据库,因此Dao层的代码可能会有所不同。

util类就不写了!

通常情况下,一个Spring Boot工程中的组件编写顺序可以如下:

  1. Entity:首先编写实体类,用于描述业务实体的属性和行为。
  2. Repository/Dao:其次编写数据访问层,即Repository/Dao,用于对实体类进行CRUD操作,并提供一些查询方法。
  3. Service:接着编写业务逻辑层,即Service,用于对外提供业务方法,并调用Repository/Dao完成数据操作。
  4. Controller:最后编写控制器层,即Controller,用于接收请求、调用Service处理业务逻辑,然后返回响应。

在实际开发中,这种顺序可以根据具体情况做出调整,但以上的顺序是比较常见的一种。


相关文章
|
8天前
|
Java API 微服务
【Spring Boot系列】通过OpenAPI规范构建微服务服务接口
【4月更文挑战第5天】通过OpenAPI接口构建Spring Boot服务RestAPI接口
|
29天前
|
Java Maven 微服务
springboot项目开启远程调试-jar包
springboot项目开启远程调试-jar包
20 0
|
1月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
156 0
|
1天前
|
Java Maven Docker
0.07 秒启动一个 SpringBoot 项目!Spring Native 很强!!
0.07 秒启动一个 SpringBoot 项目!Spring Native 很强!!
9 2
|
10天前
|
Java 应用服务中间件 Maven
【SpringBoot系列】第一课:构建一个简单的SpringBoot应用程序
【4月更文挑战第3天】构建第一个SpringBoot应用程序
|
15天前
|
JSON 前端开发 Java
统一异常处理:让Spring Boot项目异常更优雅
统一异常处理:让Spring Boot项目异常更优雅
24 1
|
25天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
1月前
|
缓存 NoSQL Java
spring cache整合redis实现springboot项目中的缓存功能
spring cache整合redis实现springboot项目中的缓存功能
46 1
|
1月前
|
Cloud Native Java 开发者
Spring Boot 4.0:构建云原生Java应用的前沿工具
Spring Boot 4.0:构建云原生Java应用的前沿工具
|
1月前
|
Java Shell API
通用Shell脚本执行Spring Boot项目Jar包
通用Shell脚本执行Spring Boot项目Jar包