📜  Spring Boot教程(1)

📅  最后修改于: 2023-12-03 15:35:03.278000             🧑  作者: Mango

Spring Boot教程

Spring Boot是一个快速开发、方便部署的Java应用程序框架。它提供默认配置,简化了应用程序的配置,并自动集成了常用的第三方库,使开发者可以更加专注于业务逻辑实现。

环境配置

在开始使用Spring Boot前,我们需要先进行一些环境配置。

Java环境

Spring Boot适用于Java 8及以上版本,因此我们需要确保已安装Java并正确配置环境变量。我们可以通过以下命令检查Java版本:

java -version

若输出结果为Java 8及以上版本,则表明Java环境已配置成功。

Maven环境

Maven是一个Java项目管理工具,可以用于构建、测试、打包和部署Java应用程序。我们可以通过以下命令检查Maven版本:

mvn -version

若输出结果中包含Maven版本号,则表明Maven环境已配置成功。

IDE

在使用Spring Boot开发Java应用程序时,我们可以使用各种IDE,例如Eclipse、IntelliJ IDEA等。这些IDE都支持Spring Boot,并提供了各种插件和扩展来简化开发流程。

开始使用Spring Boot
安装Spring Boot CLI

Spring Boot CLI是一种命令行工具,它可以快速创建、运行和测试Spring Boot应用程序。我们可以通过以下命令来安装Spring Boot CLI:

sdk install springboot
创建Spring Boot应用程序

在IDE中创建Spring Boot应用程序非常简单。我们只需要执行以下步骤:

  1. 在IDE中选择新建Java项目。
  2. 选择Spring Boot项目类型,并输入项目名称和目录。
  3. 选择要使用的Spring Boot版本和相关组件。
  4. 完成项目创建并导入所需依赖。
运行Spring Boot应用程序

在IDE中运行Spring Boot应用程序也非常简单。我们只需要执行以下步骤:

  1. 在项目中选择要运行的应用程序文件。
  2. 点击运行按钮或使用快捷键运行应用程序。
  3. 打开Web浏览器,输入应用程序URL,查看应用程序结果。
Spring Boot应用程序结构

一个Spring Boot应用程序具有以下结构:

myproject
 ├── src
 │   ├── main
 │   │   ├── java
 │   │   │   └── com
 │   │   │       └── example
 │   │   │           └── myproject
 │   │   │               ├── MyApplication.java
 │   │   │               ├── model
 │   │   │               │   └── User.java
 │   │   │               ├── repository
 │   │   │               │   └── UserRepository.java
 │   │   │               └── service
 │   │   │                   └── UserService.java
 │   │   └── resources
 │   │       ├── application.properties
 │   │       └── static
 │   └── test
 │       ├── java
 │       └── resources
 └── pom.xml

其中,MyApplication.java是Spring Boot应用程序的主类,它包含main()方法。modelrepositoryservice分别是应用程序用于存储、访问和操作数据的模型、仓库和服务。application.properties文件用于配置应用程序的属性,static目录用于存储静态资源,test目录用于存储测试用例。

Spring Boot应用程序示例

下面给出一个简单的Spring Boot应用程序示例。该程序使用Spring Data JPA访问MySQL数据库并提供RESTful API。该程序包含以下文件:

  • MyApplication.java:应用程序的主类。
  • User.java:应用程序使用的模型类。
  • UserRepository.java:应用程序使用的仓库类。
  • UserService.java:应用程序使用的服务类。
  • UserController.java:应用程序使用的控制器类。
MyApplication.java
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
User.java
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column
    private String firstname;

    @Column
    private String lastname;

    public Integer getId() {
        return id;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}
UserRepository.java
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
    List<User> findByFirstname(String firstname);
}
UserService.java
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User createUser(User user) {
        return userRepository.save(user);
    }

    public User updateUser(User user) {
        return userRepository.save(user);
    }

    public User deleteUser(Integer id) {
        Optional<User> optionalUser = userRepository.findById(id);
        if (optionalUser.isPresent()) {
            userRepository.delete(optionalUser.get());
            return optionalUser.get();
        }
        return null;
    }

    public User findUserById(Integer id) {
        Optional<User> optionalUser = userRepository.findById(id);
        if (optionalUser.isPresent()) {
            return optionalUser.get();
        }
        return null;
    }

    public List<User> findUsersByFirstname(String firstname) {
        return userRepository.findByFirstname(firstname);
    }

    public List<User> findAllUsers() {
        return userRepository.findAll();
    }
}
UserController.java
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        User createdUser = userService.createUser(user);
        return new ResponseEntity<>(createdUser, HttpStatus.CREATED);
    }

    @PutMapping("/{id}")
    public ResponseEntity<User> updateUser(@PathVariable Integer id, @RequestBody User user) {
        user.setId(id);
        User updatedUser = userService.updateUser(user);
        return new ResponseEntity<>(updatedUser, HttpStatus.OK);
    }

    @DeleteMapping("/{id}")
    public ResponseEntity<User> deleteUser(@PathVariable Integer id) {
        User deletedUser = userService.deleteUser(id);
        if (deletedUser != null) {
            return new ResponseEntity<>(deletedUser, HttpStatus.OK);
        }
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }

    @GetMapping("/{id}")
    public ResponseEntity<User> findUserById(@PathVariable Integer id) {
        User user = userService.findUserById(id);
        if (user != null) {
            return new ResponseEntity<>(user, HttpStatus.OK);
        }
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }

    @GetMapping(params = {"firstname"})
    public ResponseEntity<List<User>> findUsersByFirstname(@RequestParam String firstname) {
        List<User> users = userService.findUsersByFirstname(firstname);
        return new ResponseEntity<>(users, HttpStatus.OK);
    }

    @GetMapping
    public ResponseEntity<List<User>> findAllUsers() {
        List<User> users = userService.findAllUsers();
        return new ResponseEntity<>(users, HttpStatus.OK);
    }
}
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.hibernate.ddl-auto=update
spring.jackson.serialization.indent_output=true
测试应用程序

在完成Spring Boot应用程序开发后,我们需要对其进行测试,以确保其正常工作。

编写测试用例

在IDE中创建测试用例非常简单。我们只需要执行以下步骤:

  1. 在项目中创建新的测试用例文件。
  2. 编写测试用例代码,包括测试方法、测试数据等。
  3. 运行测试用例,并查看输出结果。
测试结果验证

在测试结束后,我们需要查看测试结果以验证应用程序是否正常工作。我们可以检查以下结果:

  • 各个测试方法的输出结果是否正确。
  • 应用程序是否按预期方式处理了请求。
  • 应用程序是否正确地执行了数据库操作。
小结

本文介绍了Spring Boot的基本概念、环境配置、应用程序结构和示例程序。通过学习本文,读者可以掌握使用Spring Boot开发Java应用程序的基本方法和技巧。