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语言学习:文件操作》16
c语言·开发语言·c++·学习·visual studio
AI科技星2 小时前
万有引力G与真空介电常数ε0全维度完整关系式汇编(基于v=c螺旋时空理论)
c语言·开发语言·前端·javascript·网络·汇编·electron
ss2732 小时前
ai编程Trae cn生成图书管理系统(1)
java·数据库·spring boot·python·flask·fastapi
如竟没有火炬2 小时前
寻找峰值——二分
java·开发语言·数据结构·python·算法·散列表
Lumbrologist2 小时前
【C++】零基础入门 · 第 17 节:多线程编程基础
java·c++·算法
tkevinjd2 小时前
事务、ACID与隔离
java·数据库·sql
阿洛学长2 小时前
Kali Linux 虚拟机安装(VMware Workstation 17)
java·linux·服务器
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第91题】【Mysql篇】第21题:分布式锁的使用场景和原理?
java·数据库·分布式·mysql·面试
JAVA社区2 小时前
Java高级全套教程(十三)—— 分布式锁超详细实战详解(原理+三种方案企业级落地)
java·开发语言·分布式·spring cloud·面试·java-zookeeper
Mahir082 小时前
MyBatis 延迟加载深度解密:从使用方式到底层动态代理原理全解
java·后端·面试·mybatis