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

Spring Boot框架教程:从入门到简单应用实战

标签:
SpringBoot
概述

Spring Boot框架教程介绍了Spring Boot的基本概念、主要特点和安装环境,详细讲解了如何创建和运行第一个Spring Boot应用,并深入探讨了核心配置和常用注解的使用。

Spring Boot简介

Spring Boot是什么

Spring Boot 是一个基于Spring框架的简化配置工具,旨在简化新Spring应用的初始搭建以及开发过程。它通过提供默认配置、自动配置等特性,使得开发者能够快速搭建Spring应用,而不需要手动配置大量的XML或Java配置。Spring Boot的核心目标是提供一种快速开发的途径,使得开发者可以专注于应用程序的功能实现,而不是繁琐的配置细节。

Spring Boot的主要特点

  1. 自动配置:Spring Boot在启动时会根据项目依赖自动配置Spring框架及相关组件。
  2. 起步依赖:Spring Boot提供了一种特殊的依赖类型——起步依赖(Starter),通过引入一个起步依赖,就可以自动引入多个依赖,避免手动引入依赖的繁琐。
  3. 嵌入式服务器:Spring Boot可以内嵌Tomcat、Jetty或其他Servlet容器,从而简化应用部署。
  4. 生产就绪特性:内置了各种监控、健康检查、外部化配置等功能,使得开发的应用程序能够直接部署到生产环境。
  5. 无代码生成,无XML配置:Spring Boot鼓励开发者使用Java注解而非XML配置文件来配置应用,减少了配置文件的使用,简化了开发过程。

安装和环境搭建

安装环境

  1. Java环境:首先确保安装了Java环境,Spring Boot支持Java 8及其以上版本。
  2. IDE:可以使用任何Java IDE,如IntelliJ IDEA或Eclipse。
  3. Spring Boot CLI:如果你想从命令行创建Spring Boot应用,可以安装Spring Boot CLI。
  4. Maven或Gradle:Spring Boot项目通常使用Maven或Gradle进行构建管理。

创建第一个Spring Boot应用

使用IDE创建一个新的Spring Boot项目,并使用Spring Boot CLI从命令行创建项目。

使用IDE创建项目

  1. 打开IDE:打开IntelliJ IDEA或Eclipse。
  2. 创建新项目
    • 在IntelliJ IDEA中,选择File -> New -> Project,然后选择Spring Initializr
    • 在Eclipse中,选择File -> New -> Dynamic Web Project,然后在Spring Boot选项中创建。
  3. 选择项目信息
    • 输入项目名称,例如hello-springboot
    • 输入项目组ID,例如com.example
    • 选择Spring Boot版本。
    • 添加所需的起步依赖,例如Spring Web

使用Spring Boot CLI创建项目

  1. 打开命令行工具。
  2. 输入以下命令创建新的Spring Boot项目:
    spring init --dependencies=web --groupId=com.example --artifactId=hello-springboot --version=2.7.5 --java-version=11 hello-springboot
    cd hello-springboot

运行环境搭建

确保你的开发环境已经安装了JDK和IDE,并且已经配置好环境变量。在IDE中配置Maven或Gradle的构建工具。通过IDE的快捷方式或命令行启动Spring Boot应用。

第一个Spring Boot应用

创建Spring Boot项目

在IDE中创建一个新的Spring Boot项目。

  1. 打开IDE:打开IntelliJ IDEA或Eclipse。
  2. 创建新项目
    • 在IntelliJ IDEA中,选择File -> New -> Project,然后选择Spring Initializr
    • 在Eclipse中,选择File -> New -> Dynamic Web Project,然后在Spring Boot选项中创建。
  3. 选择项目信息
    • 输入项目名称,例如hello-springboot
    • 输入项目组ID,例如com.example
    • 选择Spring Boot版本。
    • 添加所需的起步依赖,例如Spring Web

运行第一个Spring Boot程序

创建一个简单的Hello World应用。

  1. 创建一个Spring Boot启动类

    • 创建一个Java类,例如HelloApplication,并添加@SpringBootApplication注解。
    • 在该类中加入main方法启动应用。
      
      package com.example.helloworld;

    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 HelloApplication {

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

    @RestController
    public class HelloController {

       @GetMapping("/")
       public String hello() {
           return "Hello Spring Boot!";
       }

    }
    }

  2. 运行应用
    • 右键点击HelloApplication类,选择Run
    • 在浏览器中访问http://localhost:8080,将看到输出Hello Spring Boot!

了解项目结构

  • 目录结构
    • src/main/java:存放Java源代码。
    • src/main/resources:存放配置文件和静态资源。
    • src/main/resources/application.properties:Spring Boot的配置文件。
    • pom.xmlbuild.gradle:构建脚本文件。
Spring Boot核心配置

application.properties和application.yml配置详解

Spring Boot使用application.propertiesapplication.yml文件进行配置。尽管application.yml使用YAML格式,但两者功能相同。

基础配置

  • 配置服务器端口:

    server.port=8081
  • 配置应用名称:

    spring.application.name=myapp
  • 配置日志级别:
    logging.level.root=INFO

配置数据库连接

  • 使用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

自动配置原理

Spring Boot通过@EnableAutoConfiguration注解启用自动配置功能。Spring Boot会根据类路径中的特定类自动配置应用程序。例如,如果类路径中包含DataSource类,Spring Boot将自动配置一个嵌入式数据库连接。

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}
Spring Boot常用注解

@SpringBootApplication

@SpringBootApplication是一个复合注解,包含@Configuration@EnableAutoConfiguration@ComponentScan

  • @Configuration:标注该类为配置类,表明该类包含@Bean方法。
  • @EnableAutoConfiguration:启用Spring Boot自动配置。
  • @ComponentScan:扫描并注册该包及其子包下的所有Spring组件。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

@Controller, @Service, @Repository, @Component

这些注解主要用来标识Spring组件的不同角色。

  • @Controller:用于处理HTTP请求的控制器类。
  • @Service:用于业务逻辑层的类。
  • @Repository:用于数据访问层的类。
  • @Component:通用注解,用于通用的组件。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@Controller
public class HelloController {
    @GetMapping("/")
    public String hello() {
        return "Hello Spring Boot!";
    }
}

@Service
public class MyService {
    // 业务逻辑方法
}

@RequestMapping, @GetMapping, @PostMapping

这些注解用于配置HTTP请求映射。

  • @RequestMapping:映射所有HTTP方法。
  • @GetMapping:映射GET请求。
  • @PostMapping:映射POST请求。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

    @GetMapping("/greet")
    public String greet() {
        return "Hello Spring Boot!";
    }

    @PostMapping("/submit")
    public String submit() {
        return "POST request received!";
    }
}
Spring Boot数据访问

使用Spring Data JPA操作数据库

Spring Data JPA简化了JPA的使用,提供了更简洁的接口和实现。

添加依赖

pom.xmlbuild.gradle中添加Spring Data JPA依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

配置数据源

使用application.propertiesapplication.yml配置数据源。

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
spring.jpa.hibernate.ddl-auto=update

创建实体类

创建一个简单的实体类。

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 and Setter methods
}

创建Repository接口

创建一个继承JpaRepository接口的Repository类。

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

public interface UserRepository extends JpaRepository<User, Long> {
    User findByName(String name);
}

使用Repository

在服务类中使用Repository方法。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

    @Transactional
    public User findUserByName(String name) {
        return userRepository.findByName(name);
    }

    @Transactional
    public void addUser(User user) {
        userRepository.save(user);
    }
}

连接关系型数据库和非关系型数据库

Spring Boot支持多种数据库,包括关系型数据库(如MySQL、PostgreSQL)和非关系型数据库(如MongoDB)。

连接MySQL数据库

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update

连接MongoDB数据库

spring.data.mongodb.uri=mongodb://localhost:27017/mydb

事务管理

Spring Boot支持声明式事务管理,通过@Transactional注解自动管理事务。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

    @Transactional
    public User findUserByName(String name) {
        return userRepository.findByName(name);
    }

    @Transactional
    public void addUser(User user) {
        userRepository.save(user);
    }
}
点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消