在以下Spring服务中,我在ClassToCreate的构造函数中创建MyService

 @Service("MyService")
 public class MyService {

  private final Repository repository;
  private final ClassToCreate classToCreate;

        @Autowired
        public MyService(
                Repository repository,
                @Value("${path}") String path
                ) {

            this.ClassToCreate = new ClassToCreate(repository, path);
        }

        public void myMethod(Object object){

        String appendedPath = path + object.id();

        //create different instance of classToCreate with variable appended
        ClassToCreate classToCreate = new ClassToCreate(repository, appendedPath);

        classToCreate.doSomething();

        }


    }


当我在ClassToCreate中尝试而不是使用构造函数中的内容时,创建和使用myMethod的不同实例的最佳方法是什么?

我想在这里使用构造函数的路径创建类的其他实例,但将object.id附加为ClassToCreate的路径。我还需要使用与传递到repository构造函数中相同的MyService值。

最佳答案

您可以使用合成。
您可以使用组件(Spring中的@Component)。
创建工厂方法,该方法返回ClassToCreate的对象。

@Component


公共类ClassToCreateFactory {

private Repository repository;
private String path;

@Autowired
public ClassToCreateFactory (Repository repository, @Value("${path}") String path) {
    this.repository = repository;
    this.path = path;
}

public static ClassToCreate getClassToCreate() {
    return new ClassToCreate(repository, path);
}


}

07-26 00:51