基于注释的工厂方法

pio*_*rek 14 java spring annotations

我希望能够自动装配单个bean(foo)

@Component
public class FooUser {

  @Autowire Foo foo;
}
Run Code Online (Sandbox Code Playgroud)

由另一个单身人士的方法创建(FooFactory.createFoo)

@Service
public class FooFactory {

  public Foo createFoo() {...}
}
Run Code Online (Sandbox Code Playgroud)

用xml就可以了factory-method.我怎么能用注释做到这一点?

Tom*_*icz 13

尝试使用Java @Configuration:

@Configuration 
public class Config {

    @Bean
    public FooUser fooUser() {
        return new FooUser(foo());
    }

    @Bean
    public FooFactory fooFactory() {
        return new FooFactory();
    }

    @Bean
    public Foo foo() {
        return fooFactory().createFoo();
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 我不会那样做。不要直接调用方法,而是使用按参数注入。否则: `fooUser().getFoo() != AppContext.getBean(Foo.class)` 因为你已经手动调用了该方法,在它被 spring 单调之前 (2认同)