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

     

  • 相关阅读:
    为什么不能直接导入Statsmodels使用?
    数据分析工作的主要内容和基本流程
    Nodejs 包与 NPM 第三方模块安装和 package.json 以及 CNPM (4)
    CommonJs 和 Nodejs 中自定义模块 (3)
    pyhthon 处理pdf 合集
    02 nodejs HTTP模块和url模块配置supervisor
    1 nodejs简介与开发环境配置
    mysql 修改root密码和禁用无密码登录配置
    floodFill填充函数函数(六)
    粗略的调整图片对比度和亮度(五)
  • 原文地址:https://www.cnblogs.com/east7/p/13199749.html
Copyright © 2011-2022 走看看