当前位置: 首页 > news >正文

Spring核心注解

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注解,示例如下 

@PropertySources({@PropertySource("classpath:config.properties"),@PropertySource("classpath:db.properties")
})

17、@Lookup

单例组件依赖非单例组件,非单例组件获取需要使用方法

http://www.lryc.cn/news/92887.html

相关文章:

  • 哈希表原理,以及unordered_set/和unordered_map的封装和迭代器的实现
  • 如何把歌曲里的伴奏音乐提取出来,分享几个方法给大家!
  • 区块链产业快速发展 和数集团开启区块链应用新时代
  • 初出茅庐的小李博客之常见字符串函数使用
  • 运筹学工程化流程和常见的运筹学算法分类以及常见软件
  • JAVA面向对象(三)
  • 前端面试题---跨域处理和异常、错误处理
  • 网络安全之反序列化漏洞分析
  • 19 贝叶斯线性回归
  • 第七十天学习记录:高等数学:微分(宋浩板书)
  • Jmeter
  • Flutter 学习 之 时间转换工具类
  • docker consul
  • 全志V3S嵌入式驱动开发(开发环境再升级)
  • ChatGPT:人工智能助手的新时代
  • 【面试】二、Java补充知识
  • LISTENER、TNSNAMES和SQLNET配置文件
  • 【Leetcode -225.用队列实现栈 -232.用栈实现队列】
  • 悟道3.0全面开源!LeCun VS Max 智源大会最新演讲
  • 2023蓝桥杯大学A组C++决赛游记+个人题解
  • wkhtmltopdf踩坑记录
  • 贪心算法part2 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
  • [C++]异常笔记
  • 浅谈一级机电管道设计中的压力与介质温度
  • Docker网络模型(八)使用 macvlan 网络
  • 控制视图内容的位置
  • 【分布式系统与一致性协议】
  • 音视频领域的未来发展方向展望
  • 时间同步/集群时间同步/在线/离线
  • 基于BP神经网络对MNIST数据集检测识别(numpy版本)