SpringAnnotation

@Autowired

  • 自动注入

@Component

  • 表明该类会作为组件类,并告知spring为这个类创建bean

  • **name:**即bean的name

@ComponentScan

  • 启用组件扫描,所以只需要再某个文件里配置一次即可

  • base-package(s):(default)扫描那个包中的bean

  • **basePackageClass:**类或接口所在的包将被扫描

@Configuration

  • proxyBeanMethods: = false/true bean之间是否有依赖,没有的会快速装载

    • **true:**保证每个bean都是单实例的

    • **false:**new 的时候会生成新bean

@PathVariable

  • /{id} @PathVariable("id") 占位符功能

@RequestParam

  • 表明需要那个参数且请求参数在url中

@Import

@PostConstruct

  • java原生注解

  • 在该类投入生产之前完场的方法

@Order

  • spring加载bean的优先级(顺序)

int value() default Ordered.LOWEST_PRECEDENCE;

@Lazy

@Lazy注解注解的作用主要是减少springIOC容器启动的加载时间

当出现循环依赖时,也可以添加@Lazy

  1. 其实在SpringBoot 2.6.0之后Spring官方已经不建议循环依赖了,出现循环依赖还是最好从编码层面做解耦比较好。

  2. 如果项目比较复杂,解耦不易的话,可以采用 @Lazy的方式解决一部分循环依赖的问题。但是要注意 @Lazy会使用代理,用代理有用代理的坑,比如CGLIB代理模式下不能直接访问属性、final和private的方法不能代理等。

Last updated