亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Springboot框架學習:從入門到實踐的簡單教程

標簽:
SpringBoot
概述

Spring Boot框架学习介绍了Spring Boot的核心概念、优势以及如何搭建开发环境,包括安装JDK、Maven或Gradle,以及创建第一个Spring Boot项目。文章还深入讲解了Spring Boot的自动配置、依赖管理和常用注解,帮助开发者快速上手并理解Spring Boot框架的精髓。

Spring Boot简介

什么是Spring Boot

Spring Boot是由Pivotal团队提供的一个基于Spring框架的工具,旨在简化Spring应用的初始搭建以及开发过程。它通过约定优于配置的原则,减少了开发人员对Spring配置文件的依赖。Spring Boot的核心目标是简化Spring应用的开发,因此它提供了大量的默认配置来帮助开发者快速构建应用,同时保持了Spring框架的灵活性和强大功能。

Spring Boot的优势

  • 快速开发:Spring Boot使用自动配置功能,减少了开发过程中的配置工作,加快了开发周期。
  • 无需配置XML:Spring Boot采用约定优于配置的原则,鼓励开发者通过约定来定义应用的行为,而不是显式地配置XML。
  • 独立运行:Spring Boot提供了一个“弹簧”(Spring Boot)应用,可以独立运行,不需要部署到传统的应用服务器上。
  • 嵌入式Servlet容器:Spring Boot内置了Tomcat、Jetty或Undertow等嵌入式的Servlet容器,简化了应用的部署。
  • 自动配置:Spring Boot自动配置了许多常用场景,如数据库连接、Web服务器等,减少了配置文件的工作。
  • Actuator端点:提供了监控和管理应用的端点,使得应用更加健壮和易于维护。
  • 外部配置:支持从YAML和属性文件中读取配置,支持环境变量和命令行参数的配置,使得配置更加灵活。

Spring Boot的环境搭建

安装Java开发工具包(JDK)

Spring Boot基于Java开发,因此需要安装Java开发工具包(JDK)。

  1. 下载并安装JDK。可以从Oracle官网或者OpenJDK等其他来源获取JDK。
  2. 配置环境变量。需要将JDK的安装路径添加到系统的环境变量中,并设置JAVA_HOME、PATH等环境变量。
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH

安装Maven或Gradle

Spring Boot项目通常使用Maven或Gradle作为构建工具。

  1. 下载并安装Maven。可以从Maven官网获取。
  2. 配置环境变量。将Maven的安装路径添加到系统的环境变量中,并设置M2_HOME、PATH等环境变量。
export M2_HOME=/path/to/maven
export PATH=$M2_HOME/bin:$PATH
  1. 下载并安装Gradle。可以从Gradle官网获取。
  2. 配置环境变量。将Gradle的安装路径添加到系统的环境变量中,并设置GRADLE_HOME、PATH等环境变量。
export GRADLE_HOME=/path/to/gradle
export PATH=$GRADLE_HOME/bin:$PATH

创建Spring Boot项目

可以使用Spring Initializr或者IDE(如STS、IntelliJ IDEA)创建Spring Boot项目。Spring Initializr提供了一个在线的快速启动器,可以根据需求选择不同的依赖项来生成项目结构。

# 使用Spring Initializr创建项目
https://start.spring.io/

以下是使用Maven创建Spring Boot项目的基本步骤:

  1. 创建一个新的Maven项目。
  2. pom.xml文件中添加Spring Boot的依赖项。例如,添加spring-boot-starter-web依赖项来开发Web应用。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 配置Spring Boot的主类。主类通常有一个main方法,用于启动应用。
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);
    }

}

项目结构介绍

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

src
├── main
│   ├── java
│   │   └── com.example.demo
│   │       └── DemoApplication.java
│   ├── resources
│   │   ├── application.properties
│   │   └── static
│   │   └── templates
│   │   └── public
└── test
    └── java
        └── com.example.demo
            └── DemoApplicationTests.java
  • src/main/java包含源代码,如主类DemoApplication.java
  • src/main/resources包含资源文件,如配置文件application.properties
  • src/main/resources/static包含静态资源文件,如HTML、CSS、JavaScript文件。
  • src/main/resources/templates包含模板文件,如Thymeleaf模板文件。
  • src/test/java包含测试代码。

运行第一个Spring Boot应用

  1. 编写主类DemoApplication.java,该类使用@SpringBootApplication注解。
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);
    }

}
  1. application.properties文件中配置应用的基本信息,如端口号。
server.port=8080
  1. 运行主类中的main方法。可以使用IDE的运行功能,也可以使用Maven或Gradle命令。
# 使用Maven运行
mvn spring-boot:run

# 使用Gradle运行
gradle bootRun
  1. 访问应用的URL,如http://localhost:8080
Spring Boot的核心特性

自动配置

Spring Boot通过自动配置功能,减少了开发过程中大量的配置工作。自动配置通过@EnableAutoConfiguration注解,根据类路径中的依赖项,自动配置应用的环境。

例如,如果项目包含了spring-boot-starter-web依赖项,Spring Boot会自动配置一个嵌入式的Servlet容器(如Tomcat),并提供一些默认的Web配置。

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);
    }

}

依赖管理和启动器

Spring Boot通过依赖管理功能,简化了依赖的管理工作。spring-boot-starter-parentspring-boot-starter提供了依赖管理,可以避免手动管理依赖和版本号的问题。

启动器(Starters)是一组依赖的集合,按照约定的名字(如spring-boot-starter-web)提供了一组默认的依赖关系,使得开发者只需要添加启动器,就可以获得一组预定义的依赖项。

例如,spring-boot-starter-web提供了一组Web开发所需的依赖项,如Spring MVC、Tomcat等。

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

配置文件的使用

Spring Boot使用application.propertiesapplication.yml文件作为配置文件。这些配置文件可以放在src/main/resources目录下,用于定义应用的各种配置项。

例如,可以在application.properties中配置服务器端口。

server.port=8080

也可以使用Java代码来读取配置文件中的值。

package com.example.demo;

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

@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
    private String name;
    private int port;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }
}
package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

    @Autowired
    private AppConfig appConfig;

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

    @Override
    public void run(String... args) {
        System.out.println(appConfig.getName());
        System.out.println(appConfig.getPort());
    }
}
Spring Boot的数据访问

数据库连接

Spring Boot提供了多种连接数据库的方式,如JDBC、JPA、MyBatis等。这里以JPA作为示例。

  1. 添加JPA和数据库驱动的依赖项。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>
</dependencies>
  1. 配置数据库连接信息。
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
spring.jpa.hibernate.ddl-auto=update
  1. 创建实体类。
package com.example.demo;

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;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}
  1. 创建数据访问层(Repository)。
package com.example.demo;

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {

}

JPA和Hibernate的使用

JPA(Java Persistence API)是Java EE平台的持久化规范。Spring Boot集成了Hibernate作为JPA的实现。

  1. 使用@Entity注解定义实体类。
package com.example.demo;

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;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}
  1. 创建数据访问层(Repository)。
package com.example.demo;

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {

}
  1. 使用@Repository注解定义数据访问层,并实现数据操作。
package com.example.demo;

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);
    }

}

数据库迁移工具Liquibase和Flyway

Liquibase和Flyway是数据库迁移工具,用于管理数据库的版本控制。

  1. 添加Liquibase或Flyway的依赖项。
<dependencies>
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
    </dependency>
    <!-- 或者使用Flyway -->
    <dependency>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-core</artifactId>
    </dependency>
</dependencies>
  1. 配置数据库迁移工具的配置文件。
# Liquibase配置
spring.liquibase.change-log=classpath:/db/changelog/db.changelog-master.yaml
spring.liquibase.enabled=true

# 或者Flyway配置
spring.flyway.locations=classpath:/db/migration
spring.flyway.enabled=true
  1. 编写数据库迁移脚本。

例如Liquibase的迁移脚本:

databaseChangeLog:
- changeSet:
    id: 1
    author: admin
    changes:
    - createTable:
        tableName: user
        columns:
        - column:
            name: id
            type: int
            autoIncrement: true
            constraints:
                primaryKey: true
                nullable: false
        - column:
            name: name
            type: varchar(255)
        - column:
            name: email
            type: varchar(255)
Spring Boot的日志和监控

日志配置

Spring Boot使用SLF4J作为日志门面,支持多种日志实现,如Logback、Log4j等。

  1. 添加日志实现的依赖项。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>
</dependencies>
  1. 配置日志的输出级别和格式。
# 日志配置
logging.level.root=INFO
logging.file.name=/path/to/logfile.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
  1. 在代码中使用@Slf4j注解来注入日志记录器。
package com.example.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    private static final Logger log = LoggerFactory.getLogger(UserService.class);

    public User saveUser(User user) {
        log.info("Saving user: {}", user);
        return user;
    }

}

应用监控

Spring Boot提供了多种监控功能,如端点(Actuator端点)、Spring Boot Admin等。

  1. 添加Actuator依赖项。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>
  1. 配置Actuator端点的访问。
# Actuator配置
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
  1. 访问Actuator端点,获取应用的监控信息。

例如,访问/actuator/health端点获取应用的健康信息。

GET http://localhost:8080/actuator/health

Actuator端点介绍

Spring Boot Actuator提供了多种端点,用于监控和管理应用的状态。

  • /actuator/health:获取应用的健康信息。
  • /actuator/info:获取应用的元数据信息。
  • /actuator/metrics:获取应用的指标信息。
  • /actuator/env:获取应用的环境信息。
  • /actuator/beans:获取应用的Bean信息。
  • /actuator/trace:获取应用的追踪信息。

例如,访问/actuator/health端点获取应用的健康信息。

GET http://localhost:8080/actuator/health
{
    "status": "UP",
    "components": {
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 195456583680,
                "free": 128371793920,
                "threshold": 10485760,
                "usableSpace": 128371793920
            }
        }
    }
}

通过这些端点,可以获取到应用的详细状态信息,帮助开发者监控和管理应用。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消