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

SpringBoot项目实战入门教程

偶然的你
关注TA
已关注
手记 236
粉丝 10
获赞 53
概述

本文将带你深入了解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应用就可以在云服务器上运行,并且会自动重启。

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