1、@Bean注解
- 作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中
- 位置: 一般出现在方法上面
- 属性: name:用于指定bean的id。当不写时,默认值是当前方法的名称
- 细节:当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象。查找的方式和Autowired注解的作用是一样的
2、@Primary注解
该注解是框架在3.0版中引入的
其作用与功能,当有多个相同类型的bean时,使用@Primary来赋予bean更高的优先级。
3、@DependsOn注解
@DependsOn注解是Spring中提供的一个指定Spring创建Bean的依赖顺序的注解。例如,在Spring中需要创建A对象和B对象,可以使用@DependsOn注解指定创建A对象时依赖B对象,此时,在Spring中就会先创建B对象,然后再创建A对象。
4、@Lazy
组件懒加载(最后使用的时候才创建)
5、@Scope
类注解,设置在类的上方,设置该类创建对象的作用范围,可以用来设置创建出来的bean是否为单例对象,属性定义bean的作用范围,默认为singleto(单例),可填prototype(非单例)
6、 @Configuration
声明这是一个配置类,替换以前配置文件
作用:用于定义配置类,,可替换xml配置文件,也可以理解为Spring配置文件当中的上下文。被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
位置: 一般出现在类上面
细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。
7、@Component
它是这些注解里面最普通的一个注解,一般用于把普通pojo实例化到spring容器中。
@Controller和@Service和@Repository是它的特殊情况,当一个类不需要进行这几种特殊归类的时候,只是作为一个普通的类,被Spring管理就OK的时候,比较适合采用@Component注解。
原理:将普通JavaBean实例化到spring容器中,Spring容器统一管理,用起来不用自己new了,相当于配置文件中的< bean id=“” class=“”/>
8、@Indexed
Spring包
org.springframework.stereotype
下,除了@Component
、@Controller、
@Service
、@Repository
外,在5.0
版本中新增了@Indexed
注解。应用中使用
<context:component-scan />
或@ComponentScan
扫描的package
包含的类越来越多的时候,Spring启动时模式注解解析时间就会变得越长。@Indexed注解的引入正是为了解决这个问题,项目编译打包时,会在自动生成META-INF/spring.components文件,文件包含被@Indexed注释的类的模式解析结果。当Spring应用上下文进行组件扫描时,META-INF/spring.components会被org.springframework.context.index.CandidateComponentsIndexLoader读取并加载,转换为CandidateComponentsIndex对象,此时组件扫描会读取CandidateComponentsIndex,而不进行实际扫描,从而提高组件扫描效率,减少应用启动时间。
9、@Order
注解@Order的作用是定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order的影响;
数字越小优先级越高,越先工作
10、@ComponentScan
这是 Spring 3.1 添加的一个注解,用来代替配置文件中的
component-scan
配置,开启组件扫描,即自动扫描包路径下的@Component
注解进行注册 bean 实例到 context 中。另外,@ComponentScans
是可重复注解,即可以配置多个,用来配置注册不同的子包。
11、@Conditional
@Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。
12、@Import
作用:用于导入其他的配置类,导入第三方jar包中的组件,或定制批量导入组件逻辑,用来引入额外的一个或者多个
@Configuration
修饰的配置文件类。
位置: 一般出现在主配置类上面
属性:value:用于指定其他配置类的字节码。
当我们使用Import的注解之后,有Import注解的类就是父配置类,而导入的都是子配置类
13、@ImportResource
@ImportResource 是导入 xml 配置,等同于 xml 文件的 resources
替代 XML 元素<import>,如果有些通过类的注册方式配置不了的,可以通过这个注解引入额外的 XML 配置文件,有些老的配置文件无法通过
@Configuration
方式配置的非常管用
14、@Profile
在Spring容器中如果存在同一类型的多个组件,可以使用@Profile注解标识实际要获取的是哪一个bean,这在不同的环境使用不同的变量的场景下非常有用。
最典型的例子:开发环境、测试环境、生产环境会配置不同的数据源,在尽量不修改代码的情况下,可以使用这个注解来动态指定要连接的数据源。
15、@PropertySource
@PropertySource注解用于指定资源文件读取的位置,它不仅能读取properties文件,也能读取xml文件,并且通过YAML解析器,配合自定义PropertySourceFactory实现解析YAML文件。
16、@PropertySources
Spring4中对@PropertySource这个注解进行了功能增强,增加了@PropertySources注解,相当于其父标签,下面可以包括多个子PropertySource注解,示例如下 文章来源:https://www.toymoban.com/news/detail-471740.html
@PropertySources({ @PropertySource("classpath:config.properties"), @PropertySource("classpath:db.properties") })
17、@Lookup
单例组件依赖非单例组件,非单例组件获取需要使用方法文章来源地址https://www.toymoban.com/news/detail-471740.html
到了这里,关于Spring核心注解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!