从零开始构建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处理业务逻辑,然后返回响应。

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


相关文章
|
2天前
|
Java 应用服务中间件 Spring
【JavaEE】Spring Boot - 项目的创建和使用(下)
【JavaEE】Spring Boot - 项目的创建和使用
6 0
|
2天前
|
数据可视化 Java 应用服务中间件
【JavaEE】Spring Boot - 项目的创建和使用(上)
【JavaEE】Spring Boot - 项目的创建和使用
6 0
|
2天前
|
存储 Java 对象存储
【JavaEE】DI与DL的介绍-Spring项目的创建-Bean对象的存储与获取
【JavaEE】DI与DL的介绍-Spring项目的创建-Bean对象的存储与获取
9 0
|
2天前
|
Java 应用服务中间件 Maven
Spring Boot项目打war包(idea:多种方式)
Spring Boot项目打war包(idea:多种方式)
13 1
|
2天前
|
前端开发 Java 测试技术
Java一分钟之Spring MVC:构建Web应用
【5月更文挑战第15天】Spring MVC是Spring框架的Web应用模块,基于MVC模式实现业务、数据和UI解耦。常见问题包括:配置DispatcherServlet、Controller映射错误、视图解析未设置、Model数据传递遗漏、异常处理未配置、依赖注入缺失和忽视单元测试。解决这些问题可提升代码质量和应用性能。注意配置`web.xml`、`@RequestMapping`、`ViewResolver`、`Model`、`@ExceptionHandler`、`@Autowired`,并编写测试用例。
51 3
|
2天前
|
Java 关系型数据库 MySQL
【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
13 4
|
2天前
|
消息中间件 JSON Java
RabbitMQ的springboot项目集成使用-01
RabbitMQ的springboot项目集成使用-01
|
2天前
|
Java 关系型数据库 MySQL
保姆级教程——将springboot项目部署到阿里云服务器包含环境配置(小白包会)
本文档详细介绍了将SpringBoot项目部署到阿里云服务器的步骤。首先,通过Xshell连接服务器,使用公网IP地址。接着,下载JDK的Linux版本,使用XFTP上传并解压,配置环境变量。然后,安装MySQL 5.7,包括下载YUM源、安装、启动服务以及修改root密码和开启远程访问。最后,将SpringBoot项目打包成jar,上传至服务器,使用`java -jar`命令运行,通过`nohup`确保服务持续运行。配置安全组以允许远程访问。
|
2天前
|
Java
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
16 0
|
2天前
|
XML Java 数据格式
Spring 项目如何使用AOP
Spring 项目如何使用AOP
23 2