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

posted @   复一日  阅读(3159)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示