title: Spring&SpringBoot常用注解总结
date: 2022-11-15 09:11:45
tags:
1. @SpringBootApplication
这里先单独拎出@SpringBootApplication
注解说一下,虽然我们一般不会主动去使用它。
这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。
@SpringBootApplication
public class SpringSecurityJwtGuideApplication {
public static void main(java.lang.String[] args) {
SpringApplication.run(SpringSecurityJwtGuideApplication.class, args);
}
}
我们可以把 @SpringBootApplication
看作是 @Configuration
、@EnableAutoConfiguration
、@ComponentScan
注解的集合。
package org.springframework.boot.autoconfigure;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
......
}
package org.springframework.boot;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}
根据 SpringBoot 官网,这三个注解的作用分别是:
-
@EnableAutoConfiguration
:启用 SpringBoot 的自动配置机制 -
@ComponentScan
: 扫描被@Component
(@Repository
,@Service
,@Controller
)注解的 bean,注解 默认 会扫描该类所在的包下所有的类。从定义扫描的路径中找出标识了需要装配的类,自动装配到spring的bean容器中 -
@Configuration
:声明一个类为配置类,用于取代bean.xml配置文件注册bean对象。@Configuration注解常常一起搭配使用的注解有@Bean、@Scope、@Lazy三个比较常见:
- @Bean:等价于Spring中的bean标签用于注册bean对象的,内部有一些初始化、销毁的属性…
- @Scope:用于声明该bean的作用域,作用域有singleton、prototype、request、session。
- @Lazy:标记该bean是否开启懒加载。
https://blog.csdn.net/weixin_43808717/article/details/118155699
如下面图片,这里只设置读取ConfigService
类所在包的所有组件,但是最终输出也有mainConfig
,是因为该注解作用于MainConfig类,默认会扫描config包。
所以,包的路径扫描是多种设置累加的结果
标签:SpringBoot,Spring,SpringBootApplication,bean,注解,Configuration From: https://www.cnblogs.com/stdxiaozhang/p/16891333.html