SpringBoot常用注解

本文详细介绍了Spring Boot的各类注解。包括组件、依赖注入、实例与生命周期、SpringMVC、配置、数据库事务、SpringSecurity、全局异常处理、AOP和测试相关注解,阐述了各注解的作用、使用场景及配置方式,对Spring Boot开发有重要指导意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

组件相关注解

@Controller

修饰MVC中controller层的组件,SpringBoot中的组件扫描功能会识别到该注解,并为修饰的类实例化对象,通常与**@RequestMapping联用**,当SpringMVC获取到请求时会转发到指定路径的方法进行处理。

@Controller
@RequestMapping("/admin")
public class UmsAdminController {
   
   
    
}

@Service

于修饰service层的组件,service层组件专注于系统业务逻辑的处理,同样会被组件扫描并生成实例化对象

@Service
public class UmsAdminServiceImpl implements UmsAdminService {
   
   
    
}

@Repository

用于修饰dao层的组件,dao层组件专注于系统数据的处理,例如数据库中的数据,同样会被组件扫描并生成实例化对象

@Repository
public interface UmsAdminRoleRelationDao {
   
   
    
}

@Component

用于修饰SpringBoot中的组件,会被组件扫描并生成实例化对象。@Controller、@Service、@Repository都是特殊的组件注解。

@Component
public class CancelOrderSender {
   
   
    

依赖注入注解

@Autowired

根据对象的类型自动注入依赖对象,默认要求注入对象实例必须存在,可以配置required=false来注入不一定存在的对象。

@Controller
@RequestMapping("/admin")
public class UmsAdminController {
   
   
    @Autowired
    private UmsAdminService adminService;
}

@Resource

默认会根据对象的名称自动注入依赖对象,如果想要根据类型进行注入,可以设置属性为type = UmsAdminService.class。

@Controller
@RequestMapping("/admin")
public class UmsAdminController {
   
   
    @Autowired
    @Resource(name = "umsAdminServiceImpl")
    private UmsAdminService adminService;
}

@Qualifier

同一个对象有多个实例可以注入时,使用@Autowired注解无法进行注入,这时可以使用@Qualifier注解指定实例的名称进行精确注入。

@Controller
@RequestMapping("/admin")
public class UmsAdminController {
   
   
    @Autowired
    @Qualifier("umsAdminServiceImpl")
    private UmsAdminService adminService;
}

实例与生命周期相关注解

@Bean

用于修饰方法,标识该方法会创建一个Bean实例,并交给Spring容器来管理

@Configuration
public class RestTemplateConfig {
   
   
    @Bean
    public RestTemplate restTemplate(){
   
   
        return new RestTemplate();
    }
}

@Scope

用于声明一个SpringBean实例的作用域,作用域的范围有以下几种:

singleton:单例模式,在Spring容器中该实例唯一,Spring默认的实例模式。
prototype:原型模式,每次使用实例都将重新创建。
request:在同一请求中使用相同的实例,不同请求重新创建。
session:在同一会话中使用相同的实例,不同会话重新创建。

@Configuration
public class RestTemplateConfig {
   
   
    @Bean
    @Scope("singleton")
    public RestTemplate restTemplate(){
   
   
        return new RestTemplate();
    }
}


@Primary

当同一个对象有多个实例时,优先选择该实例。

@Configuration
public class JacksonConfig {
   
   
    @Bean
    @Primary
    @ConditionalOnMissingBean(ObjectMapper.class)
    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
   
   
        ObjectMapper objectMapper = builder.createXmlMapper(false).build();
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        return objectMapper;
    }
}

@PostConstruct

用于修饰方法,当对象实例被创建并且依赖注入完成后执行,可用于对象实例的初始化操作。

@PreDestroy

用于修饰方法,当对象实例将被Spring容器移除时执行,可用于对象实例持有资源的释放。

public class DynamicSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
   
   

    private static Map<String, ConfigAttribute> configAttributeMap 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gary jie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值