继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spring Boot入门:轻松搭建第一个Spring Boot项目

摇曳的蔷薇
关注TA
已关注
手记 324
粉丝 54
获赞 169
概述

Spring Boot入门介绍了Spring Boot框架的基本概念和优势,涵盖了快速启动、自动配置和内置部署等功能。文章详细讲解了开发环境搭建、创建第一个Spring Boot项目以及常用注解的使用。此外,提供了构建RESTful API的实战案例和配置文件的使用方法。

简介Spring Boot

Spring Boot是什么

Spring Boot是由Pivotal团队提供的一个全新框架,其设计目的是简化新Spring应用的初始搭建以及开发过程。Spring Boot可以让人快速构建一个独立的、生产级别的基于Spring框架的应用程序。它提供了默认配置来使开发变得快速而简单。Spring Boot尽可能地减少代码和配置,帮助开发者快速构建项目。

Spring Boot的优势

  1. 快速启动:Spring Boot提供了内置的设置和配置,使得项目设置变得简单且快速。
  2. 自动配置:Spring Boot通过Spring Boot Starter可以自动配置大部分的组件,如数据库连接等。
  3. 内置部署:Spring Boot提供了嵌入式的Tomcat和Jetty服务器,可以实现“零”配置部署。
  4. 内置健康检查:Spring Boot提供了多种健康检查器,可以方便地检查应用的运行状态。
  5. 无依赖配置:Spring Boot可以自动装配所需的依赖组件,减少手动配置的工作量。
  6. 内嵌脚本:Spring Boot提供了内嵌的脚本,用于执行任务如数据库迁移等。

Spring Boot的核心概念

  1. Spring Boot Starter:Spring Boot Starter是一个用于简化新Spring应用初始搭建以及开发过程的依赖管理容器。通过引入特定的Spring Boot Starter,可以自动配置所需的组件。
  2. 自动配置:Spring Boot使用自动配置来简化配置过程,它会根据应用使用的组件来配置Spring容器。例如:
    @SpringBootApplication
    public class Application {
       public static void main(String[] args) {
           SpringApplication.run(Application.class, args);
       }
    }
  3. 命令行工具:Spring Boot提供了一个命令行工具,可以用于打包、运行和调试Spring Boot应用程序。
  4. Actuator:Spring Boot Actuator提供了多个端点来监控Spring Boot应用的健康状况和运行状态。
  5. 自定义配置:Spring Boot允许用户通过application.propertiesapplication.yml文件来自定义配置。

开发环境搭建

安装JDK

安装JDK是运行Spring Boot应用程序的前提。以下是安装JDK的步骤:

  1. 访问Oracle官方网站或第三方提供JDK下载的网站,下载JDK。
  2. 安装JDK,并确保环境变量配置正确。需要设置JAVA_HOME,并将其添加到PATH

例如,设置JAVA_HOMEPATH变量:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

安装IDE(如IntelliJ IDEA或Eclipse)

选择合适的开发工具IDE,如IntelliJ IDEA或Eclipse,进行安装。

  1. 访问IntelliJ IDEA或Eclipse官方网站下载安装包。
  2. 安装IDE,并进行基本的配置。

例如,在IntelliJ IDEA中配置JDK:

  1. 打开IntelliJ IDEA。
  2. 设置File -> Project Structure -> SDKs,添加新的JDK。
  3. 确保项目使用的SDK设置正确。

下载Spring Boot Starter

Spring Boot Starter提供了多种依赖包,可以简化应用的开发过程。以下是下载方式:

  1. 访问Spring Boot的官方网站,下载Starter依赖包。
  2. 或者在Maven仓库中搜索所需的Starter依赖,例如:spring-boot-starter-web

例如,添加Maven依赖:

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

创建第一个Spring Boot项目

使用Spring Initializr创建项目

Spring Initializr是一个在线的项目创建工具,可以帮助你快速创建一个Spring Boot项目。以下是创建步骤:

  1. 访问Spring Initializr网站(https://start.spring.io/)。
  2. 选择项目的基本信息,例如Group、Artifact等。
  3. 添加所需的依赖,如Spring Web,点击Generate生成项目。
  4. 下载生成的项目压缩包,并解压缩,导入到IDE中。

例如,创建一个简单的Web项目:

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

项目结构介绍

生成的项目结构如下:

src
├── main
│   ├── java
│   │   └── com
│   │       └── example
│   │           └── demo
│   │               ├── DemoApplication.java
│   │               └── controller
│   │                   └── HelloController.java
│   └── resources
│       └── application.properties
└── test
    └── java
        └── com
            └── example
                └── demo
                    └── DemoApplicationTests.java
  • DemoApplication.java:应用启动类。
  • HelloController.java:控制器类,处理HTTP请求。
  • application.properties:应用配置文件。
  • DemoApplicationTests.java:测试文件。

例如,创建一个简单的HelloController来响应HTTP请求:

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

DemoApplication.java中启用应用:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

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

}

运行DemoApplication,访问http://localhost:8080/hello,输出Hello, Spring Boot!

IDE导入项目

在IntelliJ IDEA中导入项目:

  1. 打开IntelliJ IDEA。
  2. 选择File -> Open,然后选择解压后的项目文件夹。

Spring Boot常用注解详解

@SpringBootApplication

@SpringBootApplication是一个复合注解,包含了@Configuration@EnableAutoConfiguration@ComponentScan三个注解。

  • @Configuration:定义一个配置类,用来替代XML配置文件。
  • @EnableAutoConfiguration:启用自动配置。
  • @ComponentScan:扫描组件,包括@Component@Service@Repository@Controller

例如,启动类:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

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

}

@RestController

@RestController@Controller@ResponseBody的组合注解,用于定义RESTful风格的控制器类。

例如:

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

@RequestMapping

@RequestMapping注解用于映射Web请求到类或操作。它通常与控制器类或方法一起使用。

  • @RequestMapping:映射所有方法到URL。
  • @GetMapping:映射GET请求到URL。
  • @PostMapping:映射POST请求到URL。
  • @PutMapping:映射PUT请求到URL。
  • @DeleteMapping:映射DELETE请求到URL。

例如:

@GetMapping("/hello")
public String hello() {
    return "Hello, Spring Boot!";
}

@Service, @Repository, @Component

  • @Service:用于标记服务层组件。
  • @Repository:用于标记数据层组件。
  • @Component:通用的组件注解,用于标记其他组件,如工具类。

例如:

package com.example.demo.service;

import org.springframework.stereotype.Service;

@Service
public class UserService {

    // 业务逻辑
}
package com.example.demo.repository;

import org.springframework.stereotype.Repository;

@Repository
public class UserRepository {

    // 数据库操作
}
package com.example.demo.util;

import org.springframework.stereotype.Component;

@Component
public class UtilService {

    // 工具方法
}

项目实战:构建简单的RESTful API

创建RESTful API的基本步骤

  1. 定义模型类:定义数据模型类。
  2. 定义数据访问层:定义Repository用于数据访问。
  3. 定义服务层:定义Service用于业务逻辑处理。
  4. 定义控制器:定义Controller用于处理HTTP请求。
  5. 测试RESTful API:通过POST、GET、PUT、DELETE请求测试API。

使用Spring Boot实现用户数据的CRUD操作

  1. 定义模型类User类。
package com.example.demo.model;

public class User {
    private Long id;
    private String name;
    private String email;

    // 构造函数、getter 和 setter 方法
}
  1. 定义数据访问层UserRepository类。
package com.example.demo.repository;

import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}
  1. 定义服务层UserService类。
package com.example.demo.service;

import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

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

    public User findById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    public List<User> findAll() {
        return userRepository.findAll();
    }

    public void deleteById(Long id) {
        userRepository.deleteById(id);
    }
}
  1. 定义控制器UserController类。
package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAllUsers() {
        return userService.findAll();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.findById(id);
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.save(user);
    }

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        user.setId(id);
        return userService.save(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteById(id);
    }
}

测试RESTful API

使用Postman或其他工具测试RESTful API:

  1. 创建用户:发送POST请求到/api/users,请求体包含用户数据。

    {
       "name": "John Doe",
       "email": "john.doe@example.com"
    }
  2. 获取所有用户:发送GET请求到/api/users

  3. 获取单个用户:发送GET请求到/api/users/1

  4. 更新用户:发送PUT请求到/api/users/1,请求体包含更新后的用户数据。

    {
       "name": "John Doe Updated",
       "email": "john.doe.updated@example.com"
    }
  5. 删除用户:发送DELETE请求到/api/users/1

配置Spring Boot应用

配置文件(application.properties和application.yml)

Spring Boot支持两种配置文件格式:application.propertiesapplication.yml。配置文件用于存储应用的配置信息,如数据库连接、日志配置、服务器端口等。

例如,application.properties文件:

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password

# 其他配置
server.port=8080
logging.level.root=INFO

例如,application.yml文件:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password

server:
  port: 8080

logging:
  level:
    root: INFO

配置数据源连接

数据库连接配置一般放在application.propertiesapplication.yml文件中。

例如,application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password

application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password

配置日志

日志配置,可以控制日志输出级别、格式等。

例如,application.properties

logging.level.root=INFO

application.yml

logging:
  level:
    root: INFO

日志配置也可以包含日志文件的输出路径和格式等:

例如,application.properties

logging.file.name=logs/app.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n

application.yml

logging:
  file:
    name: logs/app.log
  pattern:
    console: %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n

通过以上配置,可以灵活地控制日志的输出格式和位置,方便开发和调试。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP