@Bean

  • 该注释的属性的名称和语义类似于Spring XML模式中bean的元素的名称和语义。@Bean指示方法产生一个由Spring容器管理的bean。

  • 源码如下:

@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {@AliasFor("name")String[] value() default {};@AliasFor("value")String[] name() default {};/** @deprecated */@DeprecatedAutowire autowire() default Autowire.NO;boolean autowireCandidate() default true;String initMethod() default "";String destroyMethod() default "(inferred)";
}

由源码可知,@Bean可以用在方法和注释上。

使用例子

  1. 用在方法上:
public class DataSource {private String url;private String userId;private String password;public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "DataSource{" +"url='" + url + '\'' +", userId='" + userId + '\'' +", password='" + password + '\'' +'}';}
}
@Configuration
public class DataBaseConfig {@Bean("dataSource")public DataSource getDataSource(){DataSource dataSource = new DataSource();dataSource.setUserId("jingsi");dataSource.setPassword("123456");dataSource.setUrl("www");return dataSource;}}
@RestController
public class IndexController {@Autowired
//    @Resource(name = "user")private User user;@Autowiredprivate DataSource dataSource;@GetMapping(value = "index")public String index(){return "hello world!"+"dataSource:"+dataSource;}
}
  1. @Bean可以为Bean同时定义多个别名,但是别名不能为空字符串。
@Configuration
public class DataBaseConfig {@Bean({"dataSource","data2"})public DataSource getDataSource(){DataSource dataSource = new DataSource();dataSource.setUserId("jingsi");dataSource.setPassword("123456");dataSource.setUrl("www");return dataSource;}}
  1. 一般情况下,官网介绍,@Bean与@Configuration联动使用,但是我试了一下,@Bean与@Component一起使用一样生效,官网有介绍区别,这边还没有过多的理解。不过可以知道的是,与@Component一起使用,initMethod属性不生效,与@Configuration一起使用,initMethod属性有效。
@Component
public class DataBaseConfig {@Bean({"dataSource","data2"},initMethod = "toString")public DataSource getDataSource(){DataSource dataSource = new DataSource();dataSource.setUserId("jingsi");dataSource.setPassword("123456");dataSource.setUrl("www");return dataSource;}}

spring的@Bean用法相关推荐

  1. Spring 注解 @bean 和 @component 的区别, 你知道吗?

    本文打算介绍几个不太容易说出其区别,或者用途的 Spring 注解,比如 @Component 与 @Bean 的比较,@ControllerAdvice 是如何处理自定义异常的等等. Spring ...

  2. 天天用 Spring,bean 实例化原理你懂吗?

    来源:小小木的博客 www.cnblogs.com/wyc1994666/p/10650480.html 本次主要想写spring bean的实例化相关的内容.创建spring bean 实例是spr ...

  3. 品Spring:bean定义上梁山

    技术不枯燥,先来点闲聊 先说点好事高兴一下.前段时间看新闻说,我国正式的空间站建设已在进行当中.下半年,长征五号B运载火箭将在海南文昌航天发射场择机将空间站核心舱发射升空.预计用2到3年将空间站建好. ...

  4. 【Spring】Bean

    BeanDefinition:表示Bean定义 Spring根据BeanDefinition来创建Bean对象,BeanDefinition有很多属性用来描述Bean,是spring中非常核心的概念 ...

  5. Spring 异步@Async注解用法 Spring @Async注解用法总结 Spring @Async基本用法示例

    Spring 异步@Async注解用法 Spring @Async注解用法总结 Spring @Async基本用法示例 一.概述 在日常开发的工作中,经常会使用异步进行开发.Spring 提供一个简单 ...

  6. 总结 Spring 注入 bean 的四种方式

    一提到 Spring,大家最先想到的是啥?是 AOP 和 IOC 的两大特性?是 Spring 中 Bean 的初始化流程?还是基于 Spring 的 Spring Cloud 全家桶呢? 今天我们就 ...

  7. 详解Spring中Bean的自动装配~

    目录 1. 环境搭建 2. byName.byType 3. 使用注解实现自动装配 @Autowired @Resource 小结 自动装配是Spring满足bean依赖的一种方式 Spring会在上 ...

  8. 【Spring】bean的作用域(@Scope) - singleton、prototype

    已知spring 3+已拥有多种不同的作用域: singleton(默认).prototype.request.session.global session.(参考: spring中scope作用域( ...

  9. spring注解--@Bean

    @Configuration public class KnightConfig {@Beanpublic Knight knight(){return new BraveKnight(quest ( ...

最新文章

  1. Microsoft Security Essential: 微软安全软件
  2. pycharm的项目文件中包括什么_工程建设施工招标项目的招标文件包括哪些内容?...
  3. 信号模型噪声服从零均值高斯分布_非高斯噪声下基于分数低阶循环谱的调制识别方法...
  4. Fedora最小化安装后没有ifconfig命令
  5. 开课吧:C++基础之字符串匹配之BM算法(Boyer-Moore)
  6. c#SqlServer总结
  7. 怎样让计算机加快速度,六大招教你把旧电脑恢复如新,速度提升N倍!-怎么让电脑速度变快...
  8. css3 标点符号在首位,CSS 让标点符号不出现在行首
  9. JavaScript——实现九九乘法表
  10. c语言入门编辑什么,萌新必看——C语言入门编辑器推荐
  11. 如何删除.git目录
  12. 控温/恒温烙铁操作方法及使用说明
  13. SRRC认证全面解析
  14. mysql易百_MySQL DATE类型(来自易百)
  15. 华中师范大学计算机入学考试题目及分值,2018秋华师计算机的作业满分.docx
  16. Git安装及基本操作
  17. 国际最顶尖的AI技术发展,愈像一场比拼资金与人才的竞赛
  18. 孟凯想玩转大数据,得先看懂《小时代》
  19. 零基础如何备考PMP项目管理?
  20. 【2016年第6期】众包模式在大规模遥感影像信息提取领域的探索

热门文章

  1. 理想边界尺寸怎么算_预算10万,沃兰多与哈弗F7应该怎么选?网友:论油耗它的优势明显...
  2. 个人博客搭建笔记----hexo根目录下的_config.yml配置解释
  3. VJ第一周个人训练赛
  4. 验证电路之TPS23753A设计
  5. 关于面试自我介绍的介绍和模板推荐
  6. osc mysql_MySQL在线修改表结构pt-osc
  7. 守卫剑阁1.8 修改版 ,完整了!
  8. 原IBM现联想的thinkpad笔记本编号规律
  9. 使用Elaticsearch7.x的suggester联想提示、简单实现类似google的联想搜索
  10. python网页爬虫漫画案例_Python爬虫-用Scrapy框架实现漫画的爬取