@Bean注解理解和使用

@Bean注解理解和使用
       在做Spring boot整合Spring Data Redis时,注入redisTemplate对象,报错“找不到这种类型的bean”,在网上找到一篇博客(已收藏),问题已解决.
       在解决问题中,对于@Bean注解的使用,重新了解了一下,网上有的说@Bean会生成两个bean,一个是方法返回类型的首字母小写,一个是方法名;有的说只返回一个,bean的名称为方法名,搞得我有点乱,所以自己操作验证了一下:
1.在配置类中添加如下方法:

@Bean
    public User getUser(){
        User user = new User();
        user.setName("liuhongfei");
        return user;
    }

2.测试类中通过ApplicationContext获取容器中的bean

   @Test
    public void getBeanInfo(){
        Object userOne = applicationContext.getBean("getUser");
        Object userTwo = applicationContext.getBean("user");
        System.out.println("从容器里拿到的bean-userGet:" + userOne);
        System.out.println("从容器里拿到的bean-user:" + userTwo);
    }

3.执行后错误信息如下:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user' available

容器里没有一个名称为user的bean,所以被@Bean标识的方法只会返回一个bean,bean的id为方法名,bean的类型为方法返回值类型。

      &nbsp在解决找不到redisTemplate对象时,还涉及到了对象注入@Autowired和@Resource

 @Resource
    private User user; 

 @Test
    public void getUserInfo(){
        System.out.println("user的name:" + user.getName());
    }

本以为使用@Resource按bean名称注入时会报错,结果程序正常运行了,很是纳闷,网了查了一下才知道@Resource先按名称注入,若找不到名称则按类型注入,真是基础忘得好干净,至于@Resource和@Autowired源码解读,后续会加上。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: @Bean注解Java Spring框架中的一个注解,用于在@Configuration类中声明一个方法,该方法返回一个被Spring容器管理的Bean对象。\[1\]相比于其他注册Bean的注解,@Bean注解的灵活性更高。因为它可以用在方法上,而不仅仅是类上,这意味着你可以在方法使用条件语句或其他逻辑来动态获取Bean对象,使其能够根据环境的变化而变化。\[2\]此外,@Bean注解还可以用来提供Bean的详细描述,通过使用@Description注解来提供Bean的描述信息,使得对Bean的理解更加清晰。\[3\]总之,@Bean注解Spring框架中用于声明和注册Bean的一种灵活且功能强大的注解。 #### 引用[.reference_title] - *1* [基于Java的容器注解@Bean](https://blog.csdn.net/wu631464569/article/details/51952787)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [对@Bean注解的学习理解(大白话解释)](https://blog.csdn.net/lzhNox/article/details/127780114)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [spring @Bean注解使用](https://blog.csdn.net/weixin_30273763/article/details/97971121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值