博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
@bean和@component的理解
阅读量:4046 次
发布时间:2019-05-24

本文共 1267 字,大约阅读时间需要 4 分钟。

Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。

完成这两个动作有三种方式,一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式。
在自动配置的方式中,使用@Component去告诉Spring,我是一个bean,你要来管理我,然后使用@AutoWired注解去装配Bean(所谓装配,就是管理对象直接的协作关系)。然后在JavaConfig中,@Configuration其实就是告诉spring,spring容器要怎么配置(怎么去注册bean,怎么去处理bean之间的关系(装配))。那么久很好理解了,@Bean的意思就是,我要获取这个bean的时候,你spring要按照这种方式去帮我获取到这个bean。到了使用xml的方式,也是如此。君不见<bean>标签就是告诉spring怎么获取这个bean,各种<ref>就是手动的配置bean之间的关系。

用@Bean注解的方法:会实例化、配置并初始化一个新的对象,这个对象会由spring IoC 容器管理。

@Configurationpublic class AppConfig {    @Bean    public MyService myService() {        return new MyServiceImpl();    }}

相当于在 XML 文件中配置

生成对象的名字:默认情况下用@Bean注解的方法名作为对象的名字。但是可以用 name属性定义对象的名字.

@Configurationpublic class AppConfig {    @Bean(name = "myFoo")    public Foo foo() {        return new Foo();    }}

而且还可以使用name为对象起多个名字。

@Configuration    public class AppConfig {            @Bean(name = { "dataSource", "subsystemA-dataSource", "subsystemB-dataSource" })        public DataSource dataSource() {            // instantiate, configure and return DataSource bean...        }        }

在 @Component 注解的类中不能定义 类内依赖的@Bean注解的方法。@Configuration可以。

@Configuration
public class AppConfig {

@Beanpublic Foo foo() {    return new Foo(bar());}@Beanpublic Bar bar() {    return new Bar();}

}

转载地址:http://ivwci.baihongyu.com/

你可能感兴趣的文章
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
js弹窗插件
查看>>
自定义 select 下拉框 多选插件
查看>>
js判断数组内是否有重复值
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
arm linux 生成火焰图
查看>>
linux和windows内存布局验证
查看>>
linux insmod error -1 required key invalid
查看>>
linux kconfig配置
查看>>
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>
linux位操作API
查看>>
uboot.lds文件分析
查看>>