Java教程

SpringBoot项目实战入门教程

本文主要是介绍SpringBoot项目实战入门教程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概述

本文将带你深入了解Spring Boot项目实战,从环境搭建到第一个Spring Boot应用的创建,再到配置和整合技术,帮助你快速掌握Spring Boot的开发流程和常用配置。

SpringBoot项目实战入门教程
SpringBoot简介

SpringBoot是什么

Spring Boot 是一个用于简化新Spring应用程序初始搭建以及开发过程的框架。使用Spring Boot,你可以创建一个独立的基于Spring的应用程序。它允许你进行快速的脚手架开发,提供了默认配置以减少配置,同时允许你明确地配置你所需要的特性。

SpringBoot的优点

  • 快速启动: Spring Boot 提供了许多自动配置,使得开发人员可以快速启动一个应用。例如,自动配置Tomcat服务器可以让你在几行代码内启动一个Web应用。
  • 约定优于配置: Spring Boot 遵循约定优于配置的原则,这意味着它为许多常见的开发场景提供默认配置,从而减少了配置的工作量。
  • 依赖管理: Spring Boot 管理了项目的依赖,包括Spring框架和其他库,通过Spring Boot Start,开发者可以方便地引入所需功能。
  • 嵌入式Web服务器: Spring Boot 可以嵌入Tomcat、Jetty或Undertow作为HTTP服务器,无需单独安装和配置容器。
  • 生产就绪特性: Spring Boot 提供了许多生产就绪特性,例如Actuator端点用于监控和管理应用运行状态。

SpringBoot的核心概念

  • 自动配置: Spring Boot 试图自动配置应用程序中所需的bean,使其无需编写大量配置代码。例如,Spring Boot 会自动配置一个Tomcat服务器,使得开发人员无需手动配置。
  • Starter依赖: Spring Boot 提供了一系列starter依赖,这些依赖库包含了开发所需的所有必需的依赖,如spring-boot-starter-webspring-boot-starter-data-jpa等。
  • Actuator管理端点: Spring Boot Actuator 提供了多个端点,用于监控和管理应用的状态,包括健康状态、应用程序信息等。
  • Spring Boot CLI: Spring Boot 还提供了一个命令行接口 (CLI) ,可以用来运行和测试你的应用程序,而不需要构建一个可执行的JAR文件。
  • Spring Boot Devtools: 开发时提供一系列便捷工具,包括自动重启功能,这在开发过程中非常有用。
环境搭建

开发环境准备

在开始Spring Boot开发之前,你需要准备以下环境:

  • Java 8+: Spring Boot 2.0及以上版本需要Java 8及以上版本。
  • IDE: 推荐使用IntelliJ IDEA或Eclipse。
  • Maven 或 Gradle: Spring Boot 使用Maven或Gradle进行构建和依赖管理。

Maven配置

使用Maven的pom.xml文件进行配置,如下所示:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 其他依赖,如数据库连接 -->
</dependencies>
<properties>
    <java.version>1.8</java.version>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Gradle配置

使用Gradle的build.gradle文件进行配置,如下所示:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    // 其他依赖,如数据库连接
}

创建SpringBoot项目

使用IDEA创建一个新的Spring Boot项目。在IntelliJ IDEA中,点击 File -> New -> Project,选择 Spring Initializr,输入项目的基本信息并选择所需的功能模块,例如WebJPA等。IDEA会自动生成项目结构和基础代码。

配置项目环境

配置项目的pom.xmlbuild.gradle文件,确保包含Spring Boot的启动依赖。例如,使用Maven的pom.xml文件可以这样设置:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 其他依赖,如数据库连接 -->
</dependencies>
<properties>
    <java.version>1.8</java.version>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
第一个SpringBoot应用

创建Hello World项目

创建一个简单的Spring Boot应用,该应用在访问/hello路径时返回一个简单的字符串。

  1. 在IDEA中创建一个新的Spring Boot项目。
  2. src/main/java目录下创建一个包结构,例如com.example.demo
  3. 在该包下创建一个主类DemoApplication.java,代码如下:
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class DemoApplication {

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

@RestController
class HelloWorldController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}

运行项目

  1. 使用IDEA的Run选项运行DemoApplication类。
  2. 打开浏览器,访问http://localhost:8080/hello,你会看到输出Hello World!

项目目录结构解析

一个典型的Spring Boot项目的目录结构如下:

src
├── main
│   ├── java
│   │   └── com.example.demo
│   │       ├── DemoApplication.java
│   │       └── HelloWorldController.java
│   ├── resources
│   │   ├── application.properties
│   │   └── static
│   │       └── index.html
└── test
    └── java
        └── com.example.demo
            └── DemoApplicationTests.java
SpringBoot常用配置

配置文件介绍

Spring Boot 通过配置文件application.propertiesapplication.yml来进行配置。这些配置文件位于src/main/resources目录下。

例如,application.properties可以包含数据库连接配置:

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

常用配置项详解

  • Spring Boot Actuator: 通过spring-boot-starter-actuator依赖来启用。Actuator提供了一系列管理端点,用于监控和管理应用。
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
  • Spring Data JPA: 配置JPA以连接到数据库。
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

自定义配置

你可以创建自定义配置类来覆盖默认的配置。例如,创建一个CustomProperties类:

package com.example.demo.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "custom")
public class CustomProperties {
    private String property1;
    private String property2;

    // Getter and Setter
    public String getProperty1() {
        return property1;
    }

    public void setProperty1(String property1) {
        this.property1 = property1;
    }

    public String getProperty2() {
        return property2;
    }

    public void setProperty2(String property2) {
        this.property2 = property2;
    }
}

application.properties中配置属性:

custom.property1=value1
custom.property2=value2

使用注入属性:

import com.example.demo.config.CustomProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CustomPropertiesController {
    @Autowired
    private CustomProperties customProperties;

    @GetMapping("/custom")
    public String getCustomProperties() {
        return "Property1: " + customProperties.getProperty1() + ", Property2: " + customProperties.getProperty2();
    }
}
SpringBoot整合技术

SpringBoot与数据库的整合

使用Spring Boot整合数据库通常涉及JPA(Java Persistence API)或MyBatis等ORM工具。以下是一个使用Spring Data JPA的例子:

  1. 添加JPA依赖到pom.xml:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
  1. 配置数据库连接信息到application.properties

  2. 创建一个实体类,例如User.java
package com.example.demo.entity;

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

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String password;

    // Getter and Setter
}
  1. 创建一个数据访问层,例如UserRepository.java
package com.example.demo.repository;

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

public interface UserRepository extends JpaRepository<User, Long> {
}
  1. 创建一个服务类,例如UserService.java
package com.example.demo.service;

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

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}
  1. 创建一个控制器,例如UserController.java
package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping
    public ModelAndView getUsers() {
        List<User> users = userService.getAllUsers();
        ModelAndView modelAndView = new ModelAndView("user-list");
        modelAndView.addObject("users", users);
        return modelAndView;
    }
}

SpringBoot与MyBatis的整合

要将Spring Boot与MyBatis整合,可以使用spring-boot-starter-mybatis依赖:

  1. 添加依赖到pom.xml
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>
  1. 配置MyBatis:
mybatis.mapper-locations=classpath:mapper/*.xml
  1. 创建一个Mapper接口,例如UserMapper.java
package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
    List<User> getAllUsers();
}
  1. resources目录下创建mapper目录,并添加相应的XML文件UserMapper.xml
<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="getAllUsers" resultType="com.example.demo.entity.User">
        SELECT id, username, password FROM user
    </select>
</mapper>
  1. 创建一个服务类,例如MybatisService.java
package com.example.demo.service;

import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class MybatisService {
    @Autowired
    private UserMapper userMapper;

    public List<User> getAllUsers() {
        return userMapper.getAllUsers();
    }
}

SpringBoot与Redis的整合

要将Spring Boot与Redis整合,可以使用spring-boot-starter-data-redis依赖:

  1. 添加依赖到pom.xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 配置Redis连接:
spring.redis.host=localhost
spring.redis.port=6379
  1. 创建一个服务类,例如RedisService.java
package com.example.demo.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

@Service
public class RedisService {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    public void setString(String key, String value, long timeout) {
        redisTemplate.opsForValue().set(key, value);
        redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
    }

    public String getString(String key) {
        return (String) redisTemplate.opsForValue().get(key);
    }
}
  1. 创建一个控制器,例如RedisController.java
package com.example.demo.controller;

import com.example.demo.service.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping("/redis")
public class RedisController {
    @Autowired
    private RedisService redisService;

    @GetMapping("/set")
    public String setString() {
        redisService.setString("testKey", "testValue", 10);
        return "Set testKey = testValue";
    }

    @GetMapping("/get")
    public String getString() {
        return redisService.getString("testKey");
    }
}
SpringBoot项目部署

打包SpringBoot项目

打包Spring Boot项目以生成可以在任何机器上运行的可执行Jar文件。在IDEA中,可以通过Maven或Gradle的命令行工具进行打包。

  1. 在IDEA中,点击 Build -> Build Artifacts,选择你生成的spring-boot-archetype:jar
  2. 也可以通过命令行进行打包:
mvn clean package

或者:

./gradlew bootJar

部署到Tomcat服务器

将打包好的Jar文件部署到Tomcat服务器上,需要确保Tomcat服务器已经安装并配置好。

  1. 将打包好的Jar文件上传到Tomcat服务器。
  2. 在Tomcat服务器上运行以下命令:
java -jar yourapp.jar

也可以配置Tomcat的server.xml,将你的应用添加到<Host>标签下的<Context>元素中:

<Context docBase="/path/to/yourapp.jar" path="/yourapp" />

或者使用Tomcat的管理界面进行部署。

部署到云服务器

将Spring Boot应用部署到云服务器上,首先需要确保服务器已经安装了Java环境并且映射了相关的端口。

  1. 将打包好的Jar文件上传到云服务器。
  2. 使用SSH登录到服务器,运行以下命令:
java -jar yourapp.jar

或者使用服务管理工具如Supervisor来管理和守护你的应用:

sudo apt-get update
sudo apt-get install supervisor

创建一个配置文件/etc/supervisor/conf.d/yourapp.conf

[program:yourapp]
command=/usr/bin/java -jar /path/to/yourapp.jar
directory=/path/to/yourapp
autostart=true
autorestart=true
stderr_logfile=/var/log/yourapp.err.log
stdout_logfile=/var/log/yourapp.out.log

运行以下命令:

supervisorctl update
supervisorctl start yourapp

这样你的Spring Boot应用就可以在云服务器上运行,并且会自动重启。

这篇关于SpringBoot项目实战入门教程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!