目录

1.SpringBoot简介

核心概念

SpringBoot与Spring框架关系

SpringBoot主要优势

2.SpringBoot的核心特性

自动配置

起步依赖

内嵌服务器

3.SpringBoot常见注解

启动类相关注解

@SpringBootApplication(核心启动注解)

@SpringBootTest(测试)

配置相关注解

@Configuration​ + @Bean

@Autowried

@Value

Controller 相关注解

@RestController

@RequestMapping

4.SpringBoot数据库的集成

5.pringBoot RESTful API开发

REST架构核心概念

RESTful API设计规范


1.SpringBoot简介

核心概念

SpringBoot是基于Spring框架的快速开发脚手架,采用约定优于配置的理念,让开发者能够快速创建独立运行、生产级的Spring应用程序。它通过简化配置自动装配机制,大幅减少了传统Spring应用开发中的样板代码。

SpringBoot与Spring框架关系

或许很多人都认为SpingBoot是Spring的替代品,其实并非这样,SpringBoot是Spring框架的扩展和增强:

  • 建立在Spring Framework之上

  • 继承了Spring的所有特性(IoC、AOP、事务管理等)

  • 提供了更简单的配置和部署方式

  • 目标是让Spring开发变得快速而简单

SpringBoot主要优势

  • 简化配置:无需配置XML文件,自动化配置机制

  • 快速开发:通过Starter依赖快速集成各种技术栈

  • 内嵌服务器:内置Tomcat、Jetty或Undertow,无需单独部署

  • 生产就绪:内置健康检查、指标收集和管理端点

  • 微服务友好:天然支持微服务架构


2.SpringBoot的核心特性

自动配置

在我们创建一个初始的SpringBoot项目时,在启动类上会有一个@SpringBootApplication注解,SpringBoot的自动配置就是该注解中的@EnableAutoConfiguration所实现的

// SpringBoot自动根据classpath中的jar包、已定义的bean等条件
// 自动配置相应的组件
@EnableAutoConfiguration  // 启用自动配置
// 例如:当classpath中有HSQLDB时,自动配置内存数据库

工作流程:

1.检查classpath中的依赖

2.读去spring.factories中的配置类

3.根据条件注解(@Conditional)决定是否创建Bean

4.应用默认属性配置

起步依赖

起步依赖是一组预定义好的依赖描述符,它将某个功能相关的常见依赖打包在一起,开发者只需引入一个 starter,即可获得开发该功能所需的所有库。

<!-- 示例:添加Web Starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- 数据库 Starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

特点

  • 一站式依赖管理

  • 版本自动兼容

  • 简化Maven/Gradle配置

内嵌服务器

Spring Boot 内置了多个流行的 Servlet 容器,允许开发者无需部署 WAR 包即可运行 Web 应用。

Spring Boot 支持以下三种主流的嵌入式服务器:

  1. Tomcat​ : 默认服务器(spring-boot-starter-web自带)

  2. Jetty​ : 轻量级高性能服务器

  3. Undertow​ : 高性能非阻塞服务器(WildFly 使用)

如果你想使用其他的服务器,可以在xml文件中更改依赖:
 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 排除 Tomcat -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 切换为 Jetty -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

<!-- 或切换为 Undertow -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

3.SpringBoot常见注解

启动类相关注解

@SpringBootApplication(核心启动注解)

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

作用:组合注解,包含以下三个核心注解:

  • @SpringBootConfiguration:标记为配置类
  • @EnableAutoConfiguration:启用自动配类
  • @ComponentScan:组件扫描

常用参数:

@SpringBootApplication(
    scanBasePackages = "com.example",  // 扫描包路径
    exclude = {DataSourceAutoConfiguration.class},  // 排除自动配置
    scanBasePackageClasses = {UserService.class}  // 扫描特定类所在包
)

@SpringBootTest(测试)

src.text包下自动为我们创建好的测试类

@SpringBootTest()
class ApplicationTests {

    @Test
    void contextLoads() {
      //测试代码
    }
}

配置相关注解

@Configuration​ + @Bean

@Configuration修饰的类是一个配置类,@Bean注解能够将被声明方法的返回值放入springIoC容器内。

@Configuration
public class AppConfig {
    
    @Bean
    public ObjectMapper objectMapper() {
        return new ObjectMapper();
    }
}

此时ObjectMapper类就会被SpringIoC容器管理。

@Autowried

@Autowried一般修饰在字段上实现依赖注入

@Component
public class OrderService {
    
    @Autowired
    private UserRepository userRepository;  // 字段注入
    
    @Autowired
    private ProductRepository productRepository;
}

@Value

@Value是用于注入配置值的注解

@Component
public class AppConfig {
    
    // 1. 注入简单字符串
    @Value("${app.name}")
    private String appName;
    
    // 2. 注入数字
    @Value("${app.port:8080}")  // 默认值
    private int port;
    
    // 3. 注入布尔值
    @Value("${app.enabled:true}")
    private boolean enabled;
    
    // 4. 注入浮点数
    @Value("${app.version:1.0}")
    private double version;
}

Controller 相关注解

@RestController

@RestController@Component作用类似,用于标注这是一个Controller类

@RequestMapping

@RequestMapping用于将 HTTP 请求映射到控制器方法

  • 标记类时作用是作为http请求的路径前缀
  • 标记方法时作用是直接映射到对应路径

类级别注解

@RestController
@RequestMapping("/api/v1/users")  // 类级别路径前缀
public class UserController {
    
    // 完整路径: /api/v1/users
    @GetMapping
    public List<User> getUsers() {
        return userService.findAll();
    }
    
    // 完整路径: /api/v1/users/{id}
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findById(id);
    }
}

方法级别注解

@RestController
public class SimpleController {
    
    // 映射到 /hello
    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }
    
    // 映射到 /greet
    @RequestMapping(value = "/greet", method = RequestMethod.GET)
    public String greet() {
        return "Greetings!";
    }
}

4.SpringBoot数据库的集成

SpringBoot能通过简单的yaml配置实现数据库的自动连接

一个简单的数据配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo_db
    username: demo_user
    password: demo_pass
    driver-class-name: com.mysql.cj.jdbc.Driver

简单的CRUD示例(Spring Data JPA):

@Service
public class UserService {
    
    @Autowired
    private UserRepository userRepository;
    
    // 创建用户
    public User createUser(User user) {
        return userRepository.save(user);
    }
    
    // 查询用户
    public User getUserById(Long id) {
        return userRepository.findById(id)
                .orElseThrow(() -> new UserNotFoundException("用户不存在"));
    }
    
    // 更新用户
    public User updateUser(Long id, User userDetails) {
        User user = getUserById(id);
        user.setUsername(userDetails.getUsername());
        user.setEmail(userDetails.getEmail());
        return userRepository.save(user);
    }
    
    // 删除用户
    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
    
    // 查询所有用户
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}

5.pringBoot RESTful API开发

REST架构核心概念

REST(Representational State Transfer)是一种软件架构风格,包含以下核心概念:

  • 资源:一切皆资源,用URI标识

  • 表现层:资源的表现形式(JSON/XML等)

  • 状态转移:通过HTTP方法操作资源

RESTful API设计规范

RESTful API是在这四种经典Http方法的基础上建立的

  • GET方法:获取资源
  • POST方法:创建资源
  • PUT方法:更新资源
  • DELETE方法:删除资源

经典的使用示例如下:

@RestController
@RequestMapping("/api/v1/users")
public class UserController {
    
    // GET /api/v1/users
    @GetMapping
      // 获取所有用户
    
    // GET /api/v1/users/{id}
    @GetMapping("/{id}")
        // 根据ID获取用户
    
    // POST /api/v1/users
    @PostMapping
        // 创建用户
    
    // PUT /api/v1/users/{id}
    @PutMapping("/{id}")
        // 更新用户
    
    // DELETE /api/v1/users/{id}
    @DeleteMapping("/{id}")
        // 删除用户
}


制作不易,如果对你有帮助请点赞评论收藏感谢大家的支持

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐