zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    WCF 第十三章 可编程站点 为站点创建操作
    WCF 第十三章 可编程站点 所有都与URI相关
    WCF 第十二章 对等网 使用自定义绑定实现消息定向
    WCF 第十三章 可编程站点 使用WebOperationContext
    Using App.Config for user defined runtime parameters
    WCF 第十三章 可编程站点
    WCF 第十三章 可编程站点 使用AJAX和JSON进行网页编程
    WCF 第十二章 总结
    WCF 第十三章 可编程站点 使用WebGet和WebInvoke
    WCF 第十三章 可编程站点 URI和UriTemplates
  • 原文地址:https://www.cnblogs.com/east7/p/13199749.html
Copyright © 2011-2022 走看看