• Spring注解之@Bean 用法介绍


         注解 @Bean是一个方法级别的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名。

    定义Bean

          下面摘录@Configuration里的一个定义Bean的实例:

    @Configuration
    public class AppConfig {
    
       @Bean
       public TransferService transferService() {
            return new TransferServiceImpl();
       }
    
    }

    这个配置就等同于如下xml里配置:

    <beans>
    <bean id="transferService" class="com.acme.TransferServiceImpl"/>
    </beans>

    Bean的依赖

         @Bean 也可以依赖其他任意数量的Bean,如果TransferService 依赖 AccountRepository,我们可以通过方法参数实现这个依赖

    @Configuration
    public class AppConfig {
    
    @Bean
    public TransferService transferService(AccountRepository accountRepository) {
    return new TransferServiceImpl(accountRepository);
    }
    
    }

    自定义Bean的别名

         默认情况下bean的名称和方法名称相同,下面使用name属性来指定。创建BeanTest类:

    package com.eg.wiener.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.stereotype.Service;
    
    @Service
    public class BeanTest {
    
        @Bean("myBeanObj")
        public BeanTest getBeanObj() {
            BeanTest bean = new BeanTest();
            System.out.println("调用方法:" + bean);
            return bean;
        }
    
    }

         通过下面的方法可以定义多个别名:

    @Bean(name = { "myBeanObj", "myBeanObj1", "beanObj" })

         在启动Spring Boot项目时,我们通过run()方法返回的ApplicationContext对象获取我们想要的Bean:

        private static ApplicationContext applicationContext;
    
        public static void main(String[] args) {
            applicationContext = SpringApplication.run(WienerApplication.class, args);
            Object bean1 = applicationContext.getBean("myBeanObj");
    
            System.out.println(String.format("打印bean1 %s", bean1));
            bean1 = applicationContext.getBean("myBeanObj");
            System.out.println(String.format("打印bean2 %s", bean1));
        }

         项目启动后,在日志中可以发现如下三条记录:

    调用方法:com.eg.wiener.config.BeanTest@53311681
    打印bean1 com.eg.wiener.config.BeanTest@53311681
    打印bean2 com.eg.wiener.config.BeanTest@53311681

    说明定义别名成功。

    Bean的描述

         提供函数的详细描述信息对开发而言十分重要,bean的描述可以使用 @Description来提供。

    @Bean("myBeanObj")
    @Description("请添加必要的描述消息")
        public BeanTest getBeanObj() {
            BeanTest bean = new BeanTest();
            System.out.println("调用方法:" + bean);
            return bean;
        }

    Reference

     https://www.cnblogs.com/feiyu127/p/7700090.html

     

  • 相关阅读:
    Android获取IMEI码
    Android动态壁纸的制作教程
    Android编程之解决androidsupportv4打包问题
    获取文字的宽度(android)
    json 数据格式
    Android隐藏标题栏,全屏显示
    android 解析json数据格式(转)
    RelativeLayout 布局属性
    anroid 样式列表
    Windows Phone 7 淺談手勢(Gestures)運作
  • 原文地址:https://www.cnblogs.com/east7/p/13199749.html
Copyright © 2020-2023  润新知