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 集成 |
三、启动应用
-
直接运行 :运行
SpringBootApplication类的 main 方法 -
命令行运行:
mvn spring-boot:run -
打包运行:
mvn clean package java -jar target/springboot-demo-1.0-SNAPSHOT.jar
访问地址:http://localhost:8080/hello
四、总结
-
Spring 纯注解配置:使用注解替代 XML 配置
-
Spring Boot 核心概念:简化配置、快速开发
-
入门实战:从零创建一个 Spring Boot 项目
-
Starter 机制:Spring Boot 的核心依赖管理方式
Spring Boot 的优势:
-
开发效率提升 50% 以上
-
配置工作量减少 80%
-
内嵌服务器,部署更简单
-
微服务架构的理想选择