Spring Boot

Spring Boot 入门:纯注解配置详解与实践

一、Spring 纯注解配置详解

在 Spring 开发中,注解配置逐渐取代了繁琐的 XML 配置,使得配置更加简洁明了。以下是几个核心注解的详细解析:

1. @Bean

作用 :将对象注册到 Spring IOC 容器中,等同于 XML 中的 <bean/>标签。

属性

  • value:指定在 IOC 容器中的 bean 名称(key)

使用示例

复制代码
@Configuration
public class AppConfig {
    
    @Bean("dataSource")
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        return dataSource;
    }
}

2. @PropertySource

作用 :加载外部 properties 文件,等同于 <context:property-placeholder location=""/>

属性

  • value:指定 properties 文件的路径(支持 classpath: 前缀)

使用示例

复制代码
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
    
    @Value("${jdbc.driver}")
    private String driver;
    
    @Value("${jdbc.url}")
    private String url;
}

3. @ComponentScan

作用 :指定 Spring 要扫描的包路径,等同于 <context:component-scan base-package="">

属性

  • basePackages/value:指定要扫描的包路径

  • basePackageClasses:通过类来指定扫描的包

使用示例

复制代码
@Configuration
@ComponentScan({"com.example.service", "com.example.dao"})
public class AppConfig {
    // 配置类
}

4. @Import

作用 :导入其他配置类,等同于 <import/>标签

属性

  • value:配置要导入的其他配置类

使用示例

复制代码
@Configuration
@Import({JdbcConfig.class, TransactionConfig.class})
public class AppConfig {
    // 主配置类
}

5. @Configuration

作用:标识当前类是一个 Spring 配置类,等同于 applicationContext.xml 配置文件

特性

  • 配置类本身也是 Bean

  • 可以与其他注解组合使用


二、Spring Boot 入门实战

1. Spring Boot 简介

Spring Boot ​ 并不是对 Spring 功能的增强,而是提供了一种快速开发 Spring 应用的方式。

核心特点

  • 简化配置:大幅度减少 XML 配置

  • 简化 Maven 依赖:通过 starter 依赖简化配置

  • 内嵌 Web 服务器:内置 Tomcat、Jetty 等

  • 自动配置:根据依赖自动配置 Spring

  • 独立运行:可直接运行 Java 应用程序

2. Spring Boot 入门案例

2.1 创建 Maven 项目
复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
    <!-- 基础 Spring Boot 父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- 从仓库查找父依赖 -->
    </parent>
    
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <dependencies>
        <!-- 添加 Web 启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <!-- Spring Boot 打包插件 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
2.2 创建控制器
复制代码
package com.example.controller;

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 Spring Boot!";
    }
}
2.3 创建启动类
复制代码
package com.example;  // 必须是控制器、服务、映射器的上级目录

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

@SpringBootApplication  // 标识当前类是一个启动类
public class SpringBootApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(SpringBootApplication.class, args);
    }
}

3. Spring Boot 启动器详解

3.1 Starter 是什么?

Starter(启动器) ​ 是 Spring Boot 的核心特性之一,它是一个依赖和配置类的集合,能够让我们快速集成特定功能模块,无需手动配置大量依赖。

3.2 Starter 命名规范
类型 命名规范 示例
官方 Starter spring-boot-starter-模块名 spring-boot-starter-web
第三方 Starter 模块名-spring-boot-starter mybatis-spring-boot-starter
3.3 常用官方 Starter
Starter 功能描述
spring-boot-starter-web 构建 Web 应用,包括 RESTful 服务
spring-boot-starter-data-jpa Spring Data JPA 支持
spring-boot-starter-test 测试支持
spring-boot-starter-security Spring Security 安全框架
spring-boot-starter-actuator 应用监控
3.4 常用第三方 Starter
Starter 功能描述
mybatis-spring-boot-starter MyBatis 集成
druid-spring-boot-starter Druid 数据源
redis-spring-boot-starter Redis 集成

三、启动应用

  1. 直接运行 :运行 SpringBootApplication类的 main 方法

  2. 命令行运行

    复制代码
    mvn spring-boot:run
  3. 打包运行

    复制代码
    mvn clean package
    java -jar target/springboot-demo-1.0-SNAPSHOT.jar

访问地址:http://localhost:8080/hello


四、总结

  1. Spring 纯注解配置:使用注解替代 XML 配置

  2. Spring Boot 核心概念:简化配置、快速开发

  3. 入门实战:从零创建一个 Spring Boot 项目

  4. Starter 机制:Spring Boot 的核心依赖管理方式

Spring Boot 的优势

  • 开发效率提升 50% 以上

  • 配置工作量减少 80%

  • 内嵌服务器,部署更简单

  • 微服务架构的理想选择

相关推荐
带鱼吃猫2 小时前
C++11 核心特性解析(一):从初始化列表到移动语义,解锁高效对象构造
开发语言·c++
北苇渡江2 小时前
failed to get nested archive for entry Boot-inf/lib/xxx.jar
java·jar
2301_792674862 小时前
java学习day23
java
大鹏说大话2 小时前
Java 并发基石:CAS 原理深度解析与 ABA 问题终极解决方案
开发语言·python
yuweiade2 小时前
Spring Boot 集成 Kettle
java·spring boot·后端
ALex_zry2 小时前
C++ MQTT物联网通信实战:从入门到生产环境
java·c++·物联网
bjxiaxueliang2 小时前
一文掌握Python aiohttp:异步Web开发从入门到部署
开发语言·前端·python
想搞艺术的程序员2 小时前
Go RWMutex 源码分析:一个计数器,如何把“读多写少”做得又快又稳
开发语言·redis·golang
Jack_David2 小时前
Kafka批量消息发送
java·分布式·kafka