为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot教程:快速入门与实践指南

标签:
SpringBoot

本文提供了Spring Boot教程,涵盖了快速入门、项目搭建、常用注解详解、数据访问技术和项目部署与运行等多个方面,帮助开发者全面了解和使用Spring Boot框架。Spring Boot教程详细介绍了框架的优势、特点以及如何配置和运行Spring Boot项目。

Spring Boot简介

Spring Boot是什么

Spring Boot是由Spring团队提供的一个用于简化Spring应用程序开发的框架。它提供了自动配置功能,能够自动配置项目所需的组件,从而减少项目的配置量。Spring Boot的目标是简化Spring应用的初始搭建及开发过程,使开发者能够更加专注于应用的业务逻辑。

Spring Boot的优势

  1. 自动配置:Spring Boot通过约定大于配置的方式来自动配置项目,大大减少了项目配置的工作量。
  2. 无需XML配置:传统的Spring应用往往需要大量的XML配置文件,而Spring Boot通过注解和默认配置,使得项目可以做到无需XML配置。
  3. 嵌入式容器支持:Spring Boot可以嵌入Tomcat、Jetty或Undertow等应用服务器,无需手动部署WAR文件到这些应用服务器。
  4. 外部化配置:通过使用外部配置文件(如YAML或Properties文件),可以方便地调整应用的配置,而无需修改代码。
  5. 独立运行:Spring Boot应用可以打包为独立的jar或war文件,并通过命令行运行,使得部署和管理更加方便。

Spring Boot的主要特点

  1. 起步依赖:Spring Boot通过“起步依赖”简化了项目依赖的管理,只需在项目的pom.xml或build.gradle文件中添加一个起步依赖,Spring Boot就能自动引入所需的依赖。
  2. 命令行界面:Spring Boot提供了一个命令行界面(Spring Boot CLI),可以运行Groovy脚本或者简单的Java应用。
  3. Actuator:Spring Boot Actuator提供了生产就绪的特性,如健康检查、指标收集、外部配置等。
  4. 安全性:Spring Boot提供了强大的安全配置支持,可以集成Spring Security来保护应用。
Spring Boot项目搭建

选择开发环境

开发Spring Boot应用需要选择合适的开发环境。常用的开发环境包括IntelliJ IDEA、Eclipse和Visual Studio Code。在这部分,我们将使用IntelliJ IDEA来搭建一个Spring Boot项目。

创建Spring Boot项目

创建Spring Boot项目可以使用Spring Initializr,在线生成项目结构。以下是创建步骤:

  1. 访问Spring Initializr网站(https://start.spring.io/)。
  2. 选择项目生成的组(Group)、模块(Artifact)、依赖(Dependencies)以及项目打包方式(Packaging)。
  3. 点击“Generate”按钮,下载生成的压缩包。
  4. 解压压缩包,导入到IntelliJ IDEA中。

使用IDEA配置Spring Boot项目

导入项目后,进行以下配置:

  1. 导入Maven项目:如果项目是Maven项目,则需要在IntelliJ IDEA中导入Maven设置。

    • 打开IntelliJ IDEA,选择File -> New -> Project from Existing Sources...,选择项目根目录。
    • 在项目打开后,点击Maven选项卡,点击Add Framework Support,选择Spring Boot
    • 点击OK完成Maven项目的配置。
  2. 设置运行配置:配置Spring Boot项目的运行配置。

    • 右键项目根目录下的Application类,选择Run -> Run 'Application'
    • 在弹出的窗口中,点击Edit Configurations,输入Main ClassApplication类的全限定名。
    • 点击OK保存配置。
  3. 配置Tomcat服务器:如果需要部署到外部Tomcat服务器,可以配置服务器路径。
    • 打开Run -> Edit Configurations,选择Deployment选项卡。
    • 点击Add,选择Tomcat Server,输入Tomcat服务器的安装路径。
    • Server选项卡中,配置Tomcat home directory为Tomcat的安装路径。
    • 点击OK保存配置。
    • 配置示例代码:
      <tomcat.version>8.5.5</tomcat.version>
      <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-tomcat</artifactId>
       <scope>provided</scope>
      </dependency>
Spring Boot常用注解详解

@SpringBootApplication

@SpringBootApplication是一个组合注解,等同于@Configuration@EnableAutoConfiguration@ComponentScan的组合。它用于将一个类标记为Spring Boot应用的主入口点。

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

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

@RestController

@RestController用于标记一个控制器类,它会自动将方法返回的对象转换为JSON格式的响应。

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, World!";
    }
}

@Service

@Service用于标记一个服务类。通常用于处理应用的业务逻辑。

import org.springframework.stereotype.Service;

@Service
public class GreetingService {

    public String getGreeting() {
        return "Hello from service!";
    }
}

@Repository

@Repository用于标记一个数据访问层的类,例如与数据库交互的DAO类。

import org.springframework.stereotype.Repository;

@Repository
public class UserRepository {

    public void saveUser(User user) {
        // 保存用户到数据库
    }
}

@Configuration

@Configuration用于标记一个配置类,内部可以包含@Bean注解的方法,用于定义Spring容器中的bean。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {

    @Bean
    public GreetingService greetingService() {
        return new GreetingService();
    }
}
Spring Boot常用配置方法

YAML和Properties配置文件的使用

Spring Boot支持application.ymlapplication.properties两种配置文件格式。这两种文件位于src/main/resources目录下。

# application.yml
server:
  port: 8080
spring:
  application:
    name: myapp
# application.properties
server.port=8080
spring.application.name=myapp

自动配置的工作原理

Spring Boot使用@EnableAutoConfiguration注解进行自动配置。Spring Boot会根据应用中包含的依赖自动配置应用。

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

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

配置文件中的占位符

在配置文件中可以使用占位符${},这些占位符会在运行时被对应的值替换。

# application.yml
server:
  port: ${SERVER_PORT:8080}  # 使用默认值 8080
spring:
  profiles:
    active: ${PROFILE:dev}  # 使用默认值 dev
Spring Boot数据访问技术

JPA与Hibernate的集成

Spring Boot默认集成了JPA,通常会使用Hibernate作为JPA提供的实现。

  1. 添加依赖:在pom.xml中添加JPA和Hibernate依赖。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
    </dependency>
  2. 配置数据源:在application.properties中配置数据源。

    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.jpa.hibernate.ddl-auto=update
  3. 定义实体类:使用@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 name;
        private String email;
    
        // 省略 getter 和 setter 方法
    }
  4. 定义 Repository 接口:使用@Repository注解定义Repository接口。

    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface UserRepository extends JpaRepository<User, Long> {
    }
  5. 使用 Repository:在服务层中注入Repository并进行数据库操作。

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
    
        @Autowired
        private UserRepository userRepository;
    
        public User saveUser(User user) {
            return userRepository.save(user);
        }
    }

使用Spring Data JPA进行数据库操作

Spring Data JPA提供了丰富的CRUD操作接口,可以方便地进行数据库操作。

  1. 定义 Repository 接口:继承JpaRepository接口。

    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface UserRepository extends JpaRepository<User, Long> {
        User findByName(String name);
    }
  2. 执行 CRUD 操作:在服务层中使用Repository接口进行数据库操作。

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
    
        @Autowired
        private UserRepository userRepository;
    
        public User saveUser(User user) {
            return userRepository.save(user);
        }
    
        public User getUserById(Long id) {
            return userRepository.findById(id).orElse(null);
        }
    
        public User findUserByName(String name) {
            return userRepository.findByName(name);
        }
    
        public void deleteUserById(Long id) {
            userRepository.deleteById(id);
        }
    }

集成MyBatis进行数据访问

MyBatis是一个优秀的持久层框架,可以灵活地进行SQL操作。

  1. 添加依赖:在pom.xml中添加MyBatis依赖。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mybatis</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
  2. 配置数据源:在application.properties中配置数据源。

    # 数据源配置
    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    # MyBatis配置
    mybatis.mapper-locations=classpath:mapper/*.xml
  3. 定义Mapper接口:使用@Mapper注解定义Mapper接口。

    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    
    @Mapper
    public interface UserMapper {
        @Select("SELECT * FROM user WHERE name = #{name}")
        User findUserByName(String name);
    }
  4. 定义Mapper XML文件:在src/main/resources/mapper目录下定义Mapper XML文件。

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.example.demo.mapper.UserMapper">
        <select id="findUserByName" resultType="com.example.demo.entity.User">
            SELECT * FROM user WHERE name = #{name}
        </select>
    </mapper>
  5. 使用Mapper:在服务层中注入Mapper并进行数据库操作。

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
    
        @Autowired
        private UserMapper userMapper;
    
        public User findUserByName(String name) {
            return userMapper.findUserByName(name);
        }
    }
Spring Boot项目部署与运行

打包Spring Boot应用

Spring Boot应用可以打包为独立的jar或war文件,可以使用Maven或Gradle进行打包。

使用Maven打包

在项目的pom.xml中添加打包插件。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

运行mvn clean package命令进行打包,生成的jar文件位于target目录下。

使用Gradle打包

在项目的build.gradle文件中添加打包任务。

plugins {
    id 'org.springframework.boot' version '2.3.4.RELEASE'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

bootJar {
    archiveBaseName = 'demo'
    archiveVersion = '1.0.0'
}

运行gradle bootJar命令进行打包,生成的jar文件位于build/libs目录下。

在Tomcat服务器上部署

  1. 启动Tomcat服务器

    • 启动Tomcat服务器,确保Tomcat服务已经启动。
    • 将打包好的war文件放置到Tomcat的webapps目录下。
    • 访问http://localhost:8080/your-app-name,检查应用是否部署成功。
  2. 配置Tomcat服务器
    • conf/server.xml文件中,找到<Host>配置,添加或修改<Context>标签。
    • 指定应用的URL、文档根目录等。
    • 重启Tomcat服务器。
    • 配置示例代码:
      <Context path="/myapp" docBase="D:/tomcat/webapps/myapp" />

使用Docker容器化部署

Docker可以将应用及其依赖打包成一个独立的容器,方便部署和管理。

  1. 创建Dockerfile:在项目根目录下创建Dockerfile。

    FROM openjdk:11-jdk-alpine
    VOLUME /tmp
    ARG JAR_FILE=target/*.jar
    COPY ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]
  2. 构建Docker镜像

    docker build -t myapp .
  3. 运行Docker容器
    docker run -d -p 8080:8080 --name myapp-container myapp

通过以上步骤,可以成功地将Spring Boot应用部署到Docker容器中,并对外提供服务。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消