手记

SpringBoot资料入门教程

概述

本文全面介绍了SpringBoot框架的基础知识和应用实践,涵盖了框架的核心概念、自动配置机制以及环境搭建过程。详细讲解了如何使用SpringBoot创建和运行第一个应用,并深入探讨了配置文件的使用和常用注解。文章还提供了丰富的开发实践指导,帮助读者快速掌握SpringBoot资料。

SpringBoot简介

什么是SpringBoot

Spring Boot 是由Pivotal团队开发的一个基于Spring框架的快速开发框架。它简化了Spring应用程序的初始搭建以及开发过程,极大地减少了项目配置的代码量,使开发者可以快速创建独立的、基于Spring的应用程序。

SpringBoot的优势

  1. 无需配置文件:Spring Boot 通过约定优于配置的方式,尽可能地减少了配置,开发人员只需提供必要的配置,就可以启动一个完整的应用。
  2. 自动配置:Spring Boot 可以自动配置应用程序所需的服务和属性,无需手动配置。
  3. 内嵌Web服务器:Spring Boot可以内嵌Tomcat、Jetty或Undertow等Web服务器,无需部署到外部服务器。
  4. 支持云部署:Spring Boot 支持将应用部署到云环境,如Cloud Foundry,Heroku等。
  5. 全面的开发工具支持:Spring Boot 结合Spring Tool Suite或IntelliJ IDEA等开发工具,可以快速开发、单元测试和运行应用。
    6..
  6. 无代码生成要求:Spring Boot 不需要代码生成,避免了静态XML配置的复杂性。

SpringBoot的核心概念

  • @SpringBootApplication:这是Spring Boot的核心注解,用于标记启动类。它包含了@ComponentScan、@EnableAutoConfiguration以及@SpringBootConfiguration三个注解的功能。
  • 自动配置:Spring Boot 通过自动配置来简化 Spring 应用程序的配置。自动配置会根据类路径中的jar包自动配置应用程序。
  • 起步依赖:起步依赖是Spring Boot库中的一组依赖,可以自动配置应用程序所需的依赖关系。例如,使用spring-boot-starter-web依赖,Spring Boot会自动配置Tomcat并设置好基本的web环境。
  • 命令行接口:Spring Boot 提供了一个命令行接口,可以用于执行各种管理任务,如运行应用、重启应用、查看应用状态等。
环境搭建

安装JDK

要使用Spring Boot,你首先需要安装Java开发工具包(JDK)。可以到Oracle官网下载最新版的JDK,解压后运行安装程序。在安装完成后,可以使用命令行输入java -version来检查Java是否安装成功。

安装IDE

推荐使用 IntelliJ IDEA 或 Spring Tool Suite(STS)进行开发。这两款IDE都提供了对Spring Boot的全面支持,包括自动代码补全、项目构建和调试等。

IntelliJ IDEA 安装步骤

  1. 下载 IntelliJ IDEA 从官网。
  2. 安装 IntelliJ IDEA,并选择合适的版本(社区版或专业版)。
  3. 安装完成后,打开 IntelliJ IDEA 并创建一个新的Spring Boot项目。

安装Maven或Gradle

Spring Boot 通常使用Maven或Gradle进行依赖管理和构建。这里介绍如何安装Maven:

  1. 下载Maven,推荐使用最新稳定版,可以从Apache官网下载。
  2. 解压下载的压缩包,将解压后的目录加入到系统环境变量PATH中。
  3. 打开命令行并输入mvn -version来检查是否安装成功。

创建SpringBoot项目

使用IntelliJ IDEA创建Spring Boot项目:

  1. 打开 IntelliJ IDEA,选择 "File" -> "New" -> "Project"。
  2. 在弹出的窗口中,选择"Maven",勾选"Create from archetype"。
  3. 在Archetype Catalog中选择"org.springframework.boot:spring-boot-starter-archetype"。
  4. 在下一个窗口中输入项目名称、Group ID、Artifact ID等信息。
  5. 点击"Finish"完成项目创建。

配置Maven或Gradle

配置Maven或Gradle以支持Spring Boot项目:

Maven

pom.xml文件中添加依赖:

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

Gradle

build.gradle文件中添加依赖:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}
SpringBoot第一个应用

编写第一个SpringBoot应用

创建一个简单的Spring Boot应用,将创建一个Controller来响应HTTP请求。

  1. src/main/java 目录下创建一个包,例如 com.example.demo
  2. 在包下创建一个名为 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);
    }
}
  1. 在同一包下创建一个名为 HelloController.java 的类,用于处理HTTP请求。

```java.
java
package com.example.demo;

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

}


### 运行第一个应用
在IntelliJ IDEA中运行应用:

1. 右键 `DemoApplication` 类,选择 "Run"。
2. 打开浏览器,访问 `http://localhost:8080/hello`,可以看到返回 "Hello, World!"。

### 应用结构解析
应用结构主要包括以下几个部分:

- `DemoApplication.java`:启动类,包含主函数,用于启动Spring Boot应用。
- `HelloController.java`:Controller类,处理HTTP请求。

## SpringBoot配置详解

### 配置文件介绍
Spring Boot 支持两种类型的配置文件:`application.properties` 和 `application.yml`。这两种文件都可以用于配置各种属性,例如端口号、数据源、数据库连接等。

#### application.properties
```properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/dbname
spring.datasource.username=root
spring.datasource.password=root

application.yml

server:
  port: 8080
spring:
  datasource:
  url: jdbc:mysql://localhost:3306/dbname
  username: root
  password: root

使用Properties和YAML配置

  1. Properties配置

    • application.properties 文件中定义配置。
    • 例如,设置数据库连接信息。
  2. YAML配置
    • application.yml 文件中定义配置。
    • Yaml 格式相比 Properties 格式更具可读性,通常用于复杂的配置场景。

属性注入

可以使用Spring的@Value注解来注入配置文件中的属性值。

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Value("${spring.datasource.url}")
    private String url;

    @GetMapping("/hello")
    public String hello() {
        return "Hello, World! Database URL: " + url;
    }
}
SpringBoot常用注解

@SpringBootApplication

@SpringBootApplication 是一个组合注解,包含了@Configuration@EnableAutoConfiguration@ComponentScan三个注解的功能。

  • @Configuration:表示该类是一个配置类。
  • @EnableAutoConfiguration:开启自动配置。
  • @ComponentScan:扫描组件。
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);
    }
}

@RestController

@RestController 是一个组合注解,相当于@Controller@ResponseBody。用来定义一个RESTful风格的控制器。

package com.example.demo;

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:用于标识业务层组件。
  • @Repository:用于标识数据访问层组件,如JDBC、Hibernate等。
  • @Component:通用注解,用于标识任何Spring组件。
  • @Autowired:用于自动装配依赖。
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 void addUser() {
        // 使用userRepository添加用户
    }
}

注解使用示例

package com.example.demo;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan("com.example.demo")
public class DemoApplication {

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

    @Bean
    public CommandLineRunner commandLineRunner() {
        return args -> {
            System.out.println("Application is running...");
        };
    }
}
SpringBoot开发实践

添加依赖

在Spring Boot项目中,添加依赖通常通过pom.xml文件(Maven)或build.gradle文件(Gradle)完成。

Maven

pom.xml 中添加依赖:

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

Gradle

build.gradle 中添加依赖:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

创建Controller、Service、Repository

Controller

package com.example.demo;

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

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 void addUser() {
        // 使用userRepository添加用户
    }
}

Repository

package com.example.demo;

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

public interface UserRepository extends JpaRepository<User, Long> {
}

项目打包与部署

打包

在项目根目录下运行以下命令进行打包:

mvn clean package

或者使用Gradle:

./gradlew bootJar

部署

打包完成后,可以在指定的服务器上运行生成的jar文件:

java -jar target/demo-0.0.1-SNAPSHOT.jar

实际应用案例

创建一个简单的Spring Boot应用,用于显示用户信息:

用户实体类

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.AUTO)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}

用户服务类

package com.example.demo;

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

    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    public User addUser(User user) {
        return userRepository.save(user);
    }

    public User updateUser(Long id, User user) {
        User existingUser = userRepository.findById(id).orElse(null);
        if (existingUser != null) {
            existingUser.setName(user.getName());
            existingUser.setEmail(user.getEmail());
            userRepository.save(existingUser);
        }
        return existingUser;
    }

    public boolean deleteUser(Long id) {
        if (userRepository.existsById(id)) {
            userRepository.deleteById(id);
            return true;
        }
        return false;
    }
}

用户控制器类

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }

    @PostMapping("/users")
    public User addUser(@RequestBody User user) {
        return userService.addUser(user);
    }

    @PutMapping("/users/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        return userService.updateUser(id, user);
    }

    @DeleteMapping("/users/{id}")
    public boolean deleteUser(@PathVariable Long id) {
        return userService.deleteUser(id);
    }
}
总结

通过上述步骤,你已经搭建了一个Spring Boot开发环境,并创建了一个简单的Spring Boot应用。此外,你还了解了Spring Boot的核心概念、配置文件的使用、常用注解以及开发实践中的依赖添加、Controller、Service、Repository的创建以及项目的打包和部署。希望这些内容对你有所帮助,如果你对Spring Boot感兴趣,可以继续深入学习。

0人推荐
随时随地看视频
慕课网APP