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

     

  • 相关阅读:
    直方图内最大矩阵
    P1578 奶牛浴场
    P1569 [USACO11FEB]属牛的抗议Generic Cow Prote…
    P1566 加等式
    P1564 膜拜
    P1541 乌龟棋
    P1537 弹珠
    Response.AddHeader使用实例
    LSPCI具体解释分析
    介绍一款开源的类Excel电子表格软件
  • 原文地址:https://www.cnblogs.com/east7/p/13199749.html
Copyright © 2011-2022 走看看