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

Springboot项目开发资料:新手入门教程

哈士奇WWW
关注TA
已关注
手记 522
粉丝 71
获赞 400
概述

Spring Boot是一个简化Spring应用开发的开源框架,提供了一系列默认配置和开箱即用的特性,帮助开发者快速搭建独立应用。本文将详细介绍Spring Boot项目开发所需的资料,包括环境搭建、项目结构解析、常用注解和依赖介绍,以及实战案例。内容涵盖了从安装Java环境、选择合适的IDE,到创建项目、配置依赖等全流程内容。

Spring Boot简介

Spring Boot是什么

Spring Boot是一个开源框架,旨在简化Spring应用的开发。它基于Spring框架,但提供了一系列开箱即用的特性,使得开发者能够快速搭建独立的、生产级别的应用。Spring Boot使开发者无需配置复杂的XML或额外的基础设施,直接创建和运行应用。

为什么使用Spring Boot

  1. 简化配置:Spring Boot自动配置了许多常见的开发场景,如数据源、日志配置等,减少了大量手动配置的工作。
  2. 快速启动:Spring Boot提供了一组默认配置,使得应用可以快速启动并运行。
  3. 依赖管理:通过Maven或Gradle,Spring Boot有助于管理和维护项目依赖,减少了依赖版本不兼容的风险。
  4. 嵌入式容器支持:Spring Boot可以与多种应用服务器(如Tomcat、Jetty等)无缝集成,为应用创建一个轻量级的服务器环境。
  5. 生产就绪特性:Spring Boot内置了多个生产环境所需的特性,如健康检查、监控、自动重启等。

Spring Boot的核心功能

  • 自动配置:根据类路径中的库,自动配置Spring应用。
  • 内置服务器:支持内嵌的Tomcat、Jetty或Undertow服务器,无需外部容器。
  • 外部化配置:支持多种文件格式(如YAML、Properties)的外部化配置。
  • 健康检查:提供简单易用的健康端点,便于检查应用的状态。
  • Actuator端点:提供监控、诊断和管理应用的端点。
  • 快速应用开发:通过一组依赖管理和默认配置,加快应用开发速度。
开发环境搭建

安装Java开发环境

安装Java JDK

  1. 下载最新版本的Java JDK,可以从Oracle官网或OpenJDK获取。
  2. 安装JDK,按照安装向导完成安装。
  3. 配置环境变量。设置JAVA_HOME指向JDK安装目录,更新PATH环境变量包含%JAVA_HOME%\bin
# 设置环境变量
setx JAVA_HOME "C:\Program Files\Java\jdk-17.0.1"
setx PATH "%JAVA_HOME%\bin;%PATH%"
  1. 验证安装:打开命令行窗口,输入java -version,如果正确安装,将显示已安装的Java版本。
java -version

安装IDE(如IntelliJ IDEA或Eclipse)

安装IntelliJ IDEA

  1. 下载IntelliJ IDEA Community或Ultimate版,可以从JetBrains官网获取。
  2. 安装IDEA,按照安装向导完成安装。
  3. 打开IDEA,创建一个新项目。

安装Eclipse

  1. 下载Eclipse IDE for Enterprise Java Developers,可以从Eclipse官网获取。
  2. 安装Eclipse,按照安装向导完成安装。
  3. 打开Eclipse,创建一个新项目。

创建第一个Spring Boot项目

使用Spring Initializr创建项目

  1. 访问Spring Initializr网站(https://start.spring.io/),选择所需的技术栈

  2. 填写项目信息:Group ID、Artifact ID、依赖等。
    • Group ID: com.example
    • Artifact ID: demo-app
    • 选择Java版本和打包方式(Maven或Gradle)
    • 选择依赖(如Web、JPA、Thymeleaf等)
  3. 点击“Generate”按钮生成项目代码。
  4. 下载生成的项目代码,解压到本地开发环境。
  5. 使用IDE导入项目,如IntelliJ IDEA或Eclipse。
  6. 运行项目。

使用Maven创建项目

  1. 在终端中运行Maven命令,创建一个新的Spring Boot项目:
mvn archetype:generate -DgroupId=com.example -DartifactId=demo-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  1. 在生成的目录中,编辑pom.xml文件,添加Spring Boot依赖:
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 运行项目:
mvn spring-boot:run
基本项目结构解析

Maven或Gradle依赖管理

Maven依赖管理

Maven是一个强大的依赖管理和构建工具。在Spring Boot项目中,使用Maven来管理项目依赖:

  1. pom.xml文件中定义项目的基本信息和依赖:
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo-app</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>
  1. 使用Maven命令管理依赖:
mvn install
mvn clean
mvn compile

Gradle依赖管理

Gradle是另一种流行的构建工具,用于依赖管理和构建自动化。在Spring Boot项目中,使用Gradle来管理依赖:

  1. build.gradle文件中定义项目的基本信息和依赖:
plugins {
    id 'org.springframework.boot' version '2.7.5'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}
  1. 使用Gradle命令管理依赖:
gradle build
gradle clean
gradle compileJava

主配置文件详解(如application.propertiesapplication.yml

application.properties配置文件

application.properties文件用于配置应用的属性,如数据源、端口等。以下是一些常见的配置项:

# 配置应用端口
server.port=8080

# 配置数据源
spring.datasource.url=jdbc:mysql://localhost:3306/dbname
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

application.yml配置文件

application.yml文件与application.properties类似,但使用YAML格式。YAML格式易于阅读和编写,适用于复杂配置。

server:
  port: 8080

spring:
  datasource:
  url: jdbc:mysql://localhost:3306/dbname
  username: root
  password: root
  driver-class-name: com.mysql.cj.jdbc.Driver

创建Controller、Service和Repository的基本步骤

创建Controller

Controller负责处理HTTP请求,通常用于处理前端请求,如GET、POST等。

  1. 创建Controller类:
package com.example.demoapp.controller;

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

@RestController
public class HelloWorldController {

    @RequestMapping("/")
    public String helloWorld() {
        return "Hello, World!";
    }
}
  1. 运行项目,打开浏览器访问http://localhost:8080,返回"Hello, World!"。

创建Service

Service层用于处理业务逻辑,通常与数据层(Repository)交互。

  1. 创建Service接口:
package com.example.demoapp.service;

public interface GreetingService {
    String sayHello();
}
  1. 创建Service实现类:
package com.example.demoapp.service;

public class GreetingServiceImpl implements GreetingService {

    @Override
    public String sayHello() {
        return "Hello, Service!";
    }
}
  1. 在Controller中注入Service:
package com.example.demoapp.controller;

import com.example.demoapp.service.GreetingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {

    private final GreetingService greetingService;

    @Autowired
    public HelloWorldController(GreetingService greetingService) {
        this.greetingService = greetingService;
    }

    @RequestMapping("/")
    public String helloWorld() {
        return greetingService.sayHello();
    }
}

创建Repository

Repository用于与数据库交互,例如查询、插入、更新和删除操作。

  1. 创建Repository接口:
package com.example.demoapp.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import com.example.demoapp.entity.Greeting;

public interface GreetingRepository extends JpaRepository<Greeting, Long> {
}
  1. 创建实体类:
package com.example.demoapp.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Greeting {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String message;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
  1. 创建Service实现类:
package com.example.demoapp.service;

import com.example.demoapp.repository.GreetingRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class GreetingServiceImpl implements GreetingService {

    private final GreetingRepository greetingRepository;

    @Autowired
    public GreetingServiceImpl(GreetingRepository greetingRepository) {
        this.greetingRepository = greetingRepository;
    }

    @Override
    public String sayHello() {
        return greetingRepository.save(new Greeting()).getMessage();
    }
}
常用注解和依赖介绍

@SpringBootApplication注解

@SpringBootApplication注解是Spring Boot的核心注解,它包含@Configuration@EnableAutoConfiguration@ComponentScan三个注解。

  • @Configuration:表示这是一个配置类,可以包含@Bean注解的方法,用来定义bean。
  • @EnableAutoConfiguration:开启自动配置,Spring Boot根据类路径中的依赖自动配置应用。
  • @ComponentScan:扫描指定包下的所有组件,如Controller、Service、Repository等。
package com.example.demoapp;

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

@SpringBootApplication
public class DemoAppApplication {

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

@Controller、@Service、@Repository、@Component的使用

  • @Controller:标识一个控制器类,用于处理HTTP请求。
  • @Service:标识一个服务类,用于处理业务逻辑。
  • @Repository:标识一个持久层类,用于与数据库交互。
  • @Component:通用的组件注解,用于标记任何Spring组件。
package com.example.demoapp.controller;

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

@RestController
public class HelloWorldController {

    @RequestMapping("/")
    public String helloWorld() {
        return "Hello, World!";
    }
}
package com.example.demoapp.service;

import org.springframework.stereotype.Service;

@Service
public class GreetingService {

    public String sayHello() {
        return "Hello, Service!";
    }
}
package com.example.demoapp.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import com.example.demoapp.entity.Greeting;

public interface GreetingRepository extends JpaRepository<Greeting, Long> {
}
package com.example.demoapp.component;

import org.springframework.stereotype.Component;

@Component
public class MyComponent {

    public void doSomething() {
        // 执行一些逻辑
    }
}

Spring Boot中的内置配置与依赖(如数据源、日志配置)

配置数据源

application.propertiesapplication.yml中配置数据源:

spring.datasource.url=jdbc:mysql://localhost:3306/dbname
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring:
  datasource:
  url: jdbc:mysql://localhost:3306/dbname
  username: root
  password: root
  driver-class-name: com.mysql.cj.jdbc.Driver

配置日志

Spring Boot支持多种日志框架,如SLF4J、Logback、Log4j等。默认使用Logback作为日志框架。

application.propertiesapplication.yml中配置日志:

logging.level.root=INFO
logging.level.com.example=DEBUG
logging.file.name=logs/app.log
logging:
  level:
    root: INFO
    com.example: DEBUG
  file:
    name: logs/app.log
实战案例:简易RESTful API开发

创建RESTful API服务

  1. 创建一个RESTful API服务:
package com.example.demoapp.controller;

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

import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping("/api")
public class ProductController {

    @GetMapping("/products")
    public List<String> getAllProducts() {
        return Arrays.asList("Product A", "Product B", "Product C");
    }
}
  1. 运行项目,访问http://localhost:8080/api/products,返回如下JSON数据:
["Product A", "Product B", "Product C"]

使用Spring Boot测试API

  1. 创建一个测试类来测试API:
package com.example.demoapp.controller;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest(ProductController.class)
public class ProductControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void getAllProducts() throws Exception {
        mockMvc.perform(get("/api/products"))
               .andExpect(status().isOk())
               .andExpect(content().json("[\"Product A\", \"Product B\", \"Product C\"]"));
    }
}
  1. 运行测试,确保API返回正确的数据。

部署到本地服务器

  1. 打包应用:
mvn clean package
  1. 将应用部署到本地服务器(如Tomcat):
java -jar target/demo-app-1.0-SNAPSHOT.jar
日志与错误排查

Spring Boot日志配置

application.propertiesapplication.yml中配置日志:

logging.level.root=INFO
logging.level.com.example=DEBUG
logging.file.name=logs/app.log
logging:
  level:
    root: INFO
    com.example: DEBUG
  file:
    name: logs/app.log

常见错误及解决方案

404错误

如果访问某个URL时返回404错误,可能是URL路径配置错误。检查Controller类中的@RequestMapping注解是否正确配置。

依赖版本冲突

如果项目中存在依赖版本冲突,可以使用以下命令查看依赖树:

mvn dependency:tree

数据库连接问题

如果无法连接到数据库,检查application.propertiesapplication.yml中的数据源配置是否正确,确保数据库服务已启动。

使用Spring Boot Actuator监控应用

Spring Boot Actuator提供了多个监控端点,可以用于查看应用的健康状态、环境信息、指标等。

  1. 添加Actuator依赖到pom.xmlbuild.gradle文件:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
implementation 'org.springframework.boot:spring-boot-starter-actuator'
  1. 访问http://localhost:8080/actuator,查看可用的端点和它们的详细信息。

  2. 可以进一步配置Actuator端点,例如启用或禁用特定端点:
management.endpoints.web.exposure.include=health,info
management:
  endpoints:
    web:
      exposure:
        include: health,info
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP