Java 弹簧自动连线是一种静态工厂方法

Java 弹簧自动连线是一种静态工厂方法,java,spring,Java,Spring,说我有课 class Service { private final Repository repository @Autowired public Service(Repository repository) { this.repository = repository } } 它自动连接存储库类。假设我想将其更改为同时动态添加一些内容,并且我希望通过静态工厂方法来实现,同时还保持我的依赖性。我会尝试这样做: class Service {

说我有课

class Service {
    private final Repository repository

    @Autowired
    public Service(Repository repository) {
        this.repository = repository
    }
}
它自动连接存储库类。假设我想将其更改为同时动态添加一些内容,并且我希望通过静态工厂方法来实现,同时还保持我的依赖性。我会尝试这样做:

class Service {
    private final Repository repository;
    private String field;

    @Autowired
    public Service(Repository repository) {
        this.repository = repository
    }

    private Service() {}

    public static Service of(String field) {
        Service service = new Service();
        service.setField(field);
        return service;
    }

    private void setField(String field) {
        this.field = field;
    }
}
但是这段代码不起作用,因为
存储库
实际上不会被实例化

有什么方法可以同时注入spring依赖项和动态属性吗


谢谢大家!

您不能使用Spring创建静态内容。我认为Spring默认创建所有组件的单例bean/实例,如果您的存储库使用任何原型进行注释,它将由Spring容器实例化,这将非常有用。如果这样做,您将返回到紧密耦合。只要在需要的地方注射你的工厂。