• Spring @Bean标注在有参方法上


    @Bean标注在有参方法上可以获取参数的Bean,若为List集合 则获取继承或实现该类的所有已注入的Bean,验证如下

    Person.java

    public interface Person {
        /**
         * 信息
         * @return String
         */
         String inf();
    }
    

    Student.java

    public class Student implements Person {
        private String work;
        public Student(String work){
            this.work=this.getClass().getName()+":"+work;
        }
        @Override
        public String inf() {
            return this.work;
        }
    }
    

    Worker.java

    public class Worker implements Person {
        private String work;
        public Worker(String work){
            this.work=this.getClass().getName()+":"+work;
        }
        @Override
        public String inf() {
            return this.work;
        }
    }
    

    AnimalAutoConfiguration

    @Configuration
    public class AnimalAutoConfiguration {
        @Bean
        public Student getUser(){
            return new Student("学生");
        }
        @Bean
        public Worker getWorker(){
            return new Worker("上班族");
        }
        /**
         * 此处将把所有实现Persion接口的类的Bean注入list集合中
         */
        @Bean
        public List<Person> getAnimals(List<Person> list){
            return list;
        }
    }
    

    Test.java

    @RestController
    public class Test {
        @Autowired
        private  Student student;
        @Autowired
        private  Worker worker;
        @Autowired
        private  List<Person> animals;
    
        @GetMapping(value = "/get/info")
        public  void test(){
            System.out.println("student--->"+student.inf());;
            System.out.println("worker--->"+worker.inf());;
            for (Person person:animals) {
                System.out.println("animals--->"+person.inf());;
    
            }
        }
    }
    

    注:getway网关中使用该方式将所有全局过滤器集合作为参数(单个实现类也需要注入,才能获取到集合)

  • 相关阅读:
    Git 之 git原理简介
    Django 之 富文本编辑器-tinymce
    Django 之 Ajax
    Django 之 分页
    Django 之 用redis存储session
    Django 之 自定义中间件
    python 之 多线程、多进程代码
    反转字符串
    青蛙跳台阶
    pandas 之 concat
  • 原文地址:https://www.cnblogs.com/jinit/p/13461368.html
Copyright © 2020-2023  润新知