Springboot怎样通过注解的方式添加组件到容器中????
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Springboot怎样通过注解的方式添加组件到容器中????,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3034字,纯文字阅读大概需要5分钟。
内容图文
![Springboot怎样通过注解的方式添加组件到容器中????](/upload/InfoBanner/zyjiaocheng/1005/8db18063034a477ab16a135e286e2f70.jpg)
Spring容器中怎样添加组件????
- 1.@Configuration
- 2 @controller,@Repository,@Service,@Component
- 3.@Import
- 4.@Conditional(条件装配)
- 5.@ImportResource
1.@Configuration
通过该注解,可以替代xml实现完全注解开发
做法:
- 1.创建一个配置类,并在类上添加@Configuration注解
- 2 在方法中返回一个实例对象,并在方法中添加@Bean注解
@Configurationpublic class MyAppConfig {//将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名@Beanpublic HelloService helloService02(){System.out.println("配置类@Bean给容器中添加组件了...");return new HelloService();}}
注意:* @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件
* @Bean :给容器添加组件,(在配置文件中用<bean><bean/>标签添加组件)
* 容器中组件默认的id就是方法名,可以通过@Bean("tom")自定义
- 配置类本身也是一个组件(实际上是一个代理对象)
- 从spring5.2以后,@Configuration注解中多了一个属性,默认是true
-默认是true代表:springboot总会检查该组件是否已经存在于容器中,如果容器中已经存在,就直接使用; 如果没有,才会调用该方法,这也就是说通过 @Bean生成的组件是单例的,无论外界调用多少次方法,获取多少次都是同一个组件
-如果将该属性置位false.则每调用一次方法,就会新创建一个组件
根据属性proxyBeanMethods的不同取值对应着@configuration的两种配置
proxyBeanMethods=true叫作Full(全配置)
proxyBeanMethods=false叫作Lite(轻量级配置)
之所以有这两种配置,
是为了解决组件依赖的问题
(所谓组件依赖就是一个组件中含有另一个组件)
>总结:如果我们注册的组件不依赖其他组件,那么就把proxyBeanMethods属性置位false,
相反如果组件中依赖了其他组件,就置为true
原因是:如果proxyBeanMethods为true,那么每次在调用方法时,都会先去容器中寻找有无该组件,试想如果你只是单纯一个组件,不依赖其他组件,那这样就会使你的项目加载变慢,影响性能,因此此时设为false较为合适;
相反,如果你的组件要依赖其他组件,那么此时应该设为true;
2 @controller,@Repository,@Service,@Component
这4个注解同样是添加组件的注解
3.@Import
该注解作用在普通类,配置类上,会通过调用无参构造方法给容器中导入主键;
导入的主件可以是普通类,也可以引入第三方jar包中的类
4.@Conditional(条件装配)
满足指定的条件,则进行组件注入
该注解是一个组合注解,拿@ConditionalOnBean注解为例
解释:该注解标在user01方法上,表示如果容器中有名为name注解的主件,才会创建User01主件,如果容器中不存在,那么就不会创建;
如果把@ConditionalOnBean标在类上,
表示如果容器中不存在名为tom的主件,那么该配置类中的所有主件都不会被创建
@Conditional扩展注解 | 作用(判断是否满足当前指定条件) |
---|---|
@ConditionalOnJava | 系统的java版本是否符合要求 |
@ConditionalOnBean | 容器中存在指定Bean; |
@ConditionalOnMissingBean | 容器中不存在指定Bean; |
@ConditionalOnExpression | 满足SpEL表达式指定 |
@ConditionalOnClass | 系统中有指定的类 |
@ConditionalOnMissingClass | 系统中没有指定的类 |
@ConditionalOnSingleCandidate | 容器中只有一个指定的Bean,或者这个Bean是首选Bean |
@ConditionalOnProperty | 系统中指定的属性是否有指定的值 |
@ConditionalOnResource | 类路径下是否存在指定资源文件 |
@ConditionalOnWebApplication | 当前是web环境 |
@ConditionalOnNotWebApplication | 当前不是web环境 |
@ConditionalOnJndi | JNDI存在指定项 |
5.@ImportResource
@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上
内容总结
以上是互联网集市为您收集整理的Springboot怎样通过注解的方式添加组件到容器中????全部内容,希望文章能够帮你解决Springboot怎样通过注解的方式添加组件到容器中????所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。