zoukankan      html  css  js  c++  java
  • Spring @Bean 注解的使用

    使用说明

    这个注解主要用在方法上,声明当前方法体中包含了最终产生 bean 实例的逻辑,方法的返回值是一个 Bean。这个 bean 会被 Spring 加入到容器中进行管理,默认情况下 bean 的命名就是使用了 bean 注解的方法名。@Bean 一般和 @Component 或者 @Configuration 一起使用。

    @Bean 显式声明了类与 bean 之间的对应关系,并且允许用户按照实际需要创建和配置 bean 实例。

    该注解相当于:

    <bean id="useService" class="com.test.service.UserServiceImpl"/>
    

    普通组件

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
     
    @Configuration
    public class MyConfigration {
        @Bean
        public User user() {
            return new User;
        }
    }
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
     
    @RestController
    public class UserController {
        @Autowired
        User user;
     
        @GetMapping("/test")
        public User test() {
            return user.test();
        }
    }
    

    命名组件

    bean 的命名为:user,别名为:myUser,两个均可使用

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
     
    @Configuration
    public class MyConfigration {
        @Bean(name = "myUser")
        public User user() {
            return new User;
        }
    }
    

    bean 的命名为:user,别名为:myUser / yourUser,三个均可使用

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
     
    @Configuration
    public class MyConfigration {
        @Bean(name = {"myUser", "yourUser"})
        public User user() {
            return new User;
        }
    }
    

    Bean 初始化和销毁

    public class MyBean {
        public void init() {
            System.out.println("MyBean初始化...");
        }
     
        public void destroy() {
            System.out.println("MyBean销毁...");
        }
     
        public String get() {
            return "MyBean使用...";
        }
    }
    
    @Bean(initMethod="init", destroyMethod="destroy")
    public MyBean myBean() {
        return new MyBean();
    }
    

    只能用 @Bean 不能使用 @Component

    @Bean
    public OneService getService(status) {
        case (status)  {
            when 1:
                    return new serviceImpl1();
            when 2:
                    return new serviceImpl2();
            when 3:
                    return new serviceImpl3();
        }
    }
    

    参考:https://www.hangge.com/blog/cache/detail_2506.html

    https://www.jianshu.com/p/2f904bebb9d0

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

    https://www.jdon.com/50889

  • 相关阅读:
    Html页中使用OCX控件
    Delphi 7 升级到 Delphi 2010 总结
    Delphi2010下的FillChar
    机器学习之基于朴素贝叶斯文本分类算法
    JDBC对MySQL数据库存储过程的调用
    HDU1788 Chinese remainder theorem again【中国剩余定理】
    Hadoop分布式文件系统--HDFS结构分析
    【php学习笔记】ticks篇
    怎样退出App之前唤醒还有一个App?
    Java 实现策略(Strategy)模式
  • 原文地址:https://www.cnblogs.com/danhuang/p/12692995.html
Copyright © 2011-2022 走看看