SpringBoot快速上手

SpringBoot快速入门

基本概念

Spring Boot 是一个基于 Spring Framework 的开源框架,旨在简化 Spring 应用程序的开发和部署。它通过提供预先配置的模板、自动配置功能和独立运行的 Jar 包,使开发人员能够快速创建和运行基于 Spring 的生产级别的应用程序。

yml配置

YAML (YAML Ain’t Markup Language) 是一种常用的数据序列化格式,它通常用于配置文件和数据交换。YAML 文件通常以 .yaml.yml 扩展名结尾。下面是 YAML 文件的基本语法和结构的一些关键特性:

基本语法

  • YAML 是以纯文本形式编写的。
  • 数据是通过缩进来表示层级关系的。
  • 键(key)和值(value)之间使用冒号 : 分隔。
  • 列表或数组可以使用破折号 - 表示。
  • 字典或哈希表可以使用键值对的形式表示。
  • 引号不是必需的,除非值包含特殊字符。

常见数据类型

字符串
name: John Doe
数字
age: 30
布尔值
is_admin: true
空值
email:
数组
colors:
  - red
  - blue
  - green
对象
person:
  name: Jane Doe
  age: 25
  is_student: false

复杂结构

嵌套数组
students:
  - name: Alice
    age: 22
  - name: Bob
    age: 23
嵌套对象
addresses:
  - type: home
    street: 123 Main St
    city: Anytown
  - type: work
    street: 456 Market St
    city: Businessville

锚点与别名

锚点允许你在 YAML 文档中重复引用同一数据片段,而别名则指向锚点。

- &default_settings
  theme: dark
  version: 1

user_settings:
  <<: *default_settings
  theme: light

admin_settings:
  <<: *default_settings
  version: 2

字面量样式

对于多行字符串或字面量数据,你可以使用 |> 符号来表示。

message: |
  This is a multi-line string.
  It spans multiple lines.

折叠样式

折叠样式用于表示数组中的多行数据。

fruits: [ >-
  Apples,
  Bananas,
  Oranges ]

流式样式

流式样式是一种紧凑的表示方式,适合简单的数据结构。

- key1: value1
- key2: value2

键的多行表示

如果键很长,可以使用多行形式来表示。

long_key_name:
  value: some_value

多文档

可以在一个 YAML 文件中包含多个文档,每个文档以 --- 开始。

---
name: John
age: 30
---
name: Jane
age: 25

注意事项

  • 缩进通常使用空格而不是制表符(这是因为不同的系统中tab键的格式不一致)。
  • 缩进的数量很重要,因为它定义了层次结构。
  • 键名后跟的冒号后面需要有一个空格。
  • 对于多行字符串,如果你不希望 YAML 解析器自动去除首尾空白,可以使用 |> 后面加 -

基本注解使用

Spring Boot 提供了一系列的注解来简化开发过程中的配置和组件管理。以下是一些常用的 Spring Boot 注解及其用途:

1. @SpringBootApplication

  • 用途:这是一个复合注解,用于标记主配置类。它包含了 @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan 等注解。
  • 示例
    @SpringBootApplication
    public class DemoApplication {
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    

2. @SpringBootConfiguration

  • 用途:表示一个 Spring 配置类。它可以包含 @Bean 方法用于定义 Spring Bean。
  • 示例
    @SpringBootConfiguration
    public class AppConfig {
        @Bean
        public MyBean myBean() {
            return new MyBean();
        }
    }
    

3. @EnableAutoConfiguration

  • 用途:启用 Spring Boot 的自动配置功能,根据类路径中的依赖自动配置 Spring Bean。
  • 示例
    @SpringBootApplication
    public class DemoApplication {
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    

4. @ComponentScan

  • 用途:用于指定 Spring 容器扫描的包范围,以发现和管理组件。
  • 示例
    @SpringBootApplication
    @ComponentScan(basePackages = {"com.example"})
    public class DemoApplication {
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    

5. @Component, @Service, @Repository, @Controller

  • 用途:这些注解用于标记组件类,它们分别对应于一般的组件、业务逻辑层组件、数据访问层组件和控制器层组件。
  • 示例
    @Service
    public class UserService {
        public User getUserById(int id) {
            // ...
        }
    }
    

6. @RestController

  • 用途:结合了 @Controller@ResponseBody 注解的功能,用于创建 RESTful Web 服务。
  • 示例
    @RestController
    public class UserController {
        @GetMapping("/users/{id}")
        public User getUser(@PathVariable int id) {
            // ...
        }
    }
    

7. @Autowired

  • 用途:用于依赖注入,Spring 会自动为标记了 @Autowired 的字段或方法提供相应的 Bean 实例。
  • 示例
    @Service
    public class UserService {
        private final UserRepository userRepository;
    
        @Autowired
        public UserService(UserRepository userRepository) {
            this.userRepository = userRepository;
        }
    }
    

8. @Qualifier

  • 用途:用于指定特定的 Bean 实例,当有多个相同类型的 Bean 时,可以使用 @Qualifier 来指定具体使用哪一个。
  • 示例
    @Service
    public class UserService {
        private final UserRepository userRepository;
    
        @Autowired
        public UserService(@Qualifier("userRepo") UserRepository userRepository) {
            this.userRepository = userRepository;
        }
    }
    

9. @Value

  • 用途:用于注入配置文件中的属性值。
  • 示例
    @Service
    public class ConfigService {
        @Value("${app.config.property}")
        private String configProperty;
    
        public String getConfigProperty() {
            return configProperty;
        }
    }
    

10. @ConfigurationProperties

  • 用途:用于将配置文件中的属性绑定到 Bean 属性上。
  • 示例
    @ConfigurationProperties(prefix = "app.config")
    public class AppConfig {
        private String property;
    
        public String getProperty() {
            return property;
        }
    
        public void setProperty(String property) {
            this.property = property;
        }
    }
    

11. @Profile

  • 用途:用于标记特定环境下的配置,例如开发环境、测试环境或生产环境。
  • 示例
    @Configuration
    @Profile("development")
    public class DevConfig {
        @Bean
        public DataSource dataSource() {
            // ...
        }
    }
    

12. @EnableCaching

  • 用途:启用缓存支持。
  • 示例
    @Configuration
    @EnableCaching
    public class CacheConfig {
        @Bean
        public CacheManager cacheManager() {
            // ...
        }
    }
    

13. @Cacheable, @CachePut, @CacheEvict

  • 用途:用于缓存方法的结果、更新缓存或清除缓存。
  • 示例
    @Service
    @Cacheable(value = "users", key = "#id")
    public User getUserById(int id) {
        // ...
    }
    

14. @Transactional

  • 用途:用于管理事务。
  • 示例
    @Service
    public class UserService {
        @Transactional
        public void updateUser(User user) {
            // ...
        }
    }
    

15. @EnableScheduling

  • 用途:启用定时任务支持。
  • 示例
    @Configuration
    @EnableScheduling
    public class ScheduleConfig {
        @Scheduled(cron = "0 0 * * * ?")
        public void scheduledTask() {
            // ...
        }
    }
    

@Resource 是 Java 中的一个注解,用于依赖注入(Dependency Injection, DI),它是由 Java 的 JSR-250 规范定义的。@Resource 注解可以用来自动装配 Java Bean 的依赖,它的工作原理类似于 Spring 框架中的 @Autowired 注解。

16.@Resource

  • 用途: 自动装配,默认先根据名称进行装配,如果找不到名称就根据类型匹配。
  • 示例
import javax.annotation.Resource;

public class Service {
    @Resource
    private Repository repository;
}

在这种情况下,Spring 会寻找名称为 repository 的 Bean,并将其注入到 Service 类的 repository 字段中。如果找不到匹配的 Bean 名称,它将尝试按类型匹配。

import javax.annotation.Resource;

public class Service {
    @Resource(name = "myRepository")
    private Repository repository;
}

这里,@Resource 注解中的 name 属性被明确指定为 "myRepository",Spring 将寻找名称为 "myRepository" 的 Bean,并将其注入到 Service 类的 repository 字段中。

这些注解覆盖了 Spring Boot 应用程序中常见的配置和开发需求,使用这些注解可以帮助你更高效地开发 Spring Boot 应用程序。

自动装配流程

Spring Boot 的自动装配机制是一个强大的功能,它简化了配置过程,并自动设置了应用程序所需的组件和服务。以下是 Spring Boot 自动装配的基本流程:

  1. 启动应用

    • 当你运行 Spring Boot 应用程序时,通常是从一个带有 @SpringBootApplication 注解的主类开始。
  2. 配置类检测

    • @SpringBootApplication 注解包含了 @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan
    • @SpringBootConfiguration 标识了一个配置类。
    • @ComponentScan 用于扫描指定包下的组件。
  3. 自动配置

    • @EnableAutoConfiguration 启用了自动配置功能。
    • Spring Boot 会根据类路径上的依赖库自动配置 Bean。
  4. 条件匹配

    • Spring Boot 使用条件注解(如 @ConditionalOnClass@ConditionalOnMissingBean@ConditionalOnProperty 等)来决定哪些配置类应该激活。
    • 这些条件注解确保只有在满足特定条件时才会激活配置。
  5. 配置 Bean

    • 当条件满足时,Spring Boot 会从自动配置类中创建并注册 Bean 到 Spring 容器中。
    • 这些 Bean 通常是通过 @Bean 方法或通过组件扫描找到的组件。
  6. 属性绑定

    • Spring Boot 使用 @ConfigurationProperties 注解将配置文件中的属性绑定到 Bean 上。
    • 这允许用户通过配置文件轻松地修改 Bean 的行为。
  7. 启动完成

    • 一旦所有必要的 Bean 都被配置和注册,Spring Boot 应用程序就准备好了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值