0

SpringのJava構成を使用してOrderServiceImplのコンストラクターに渡すことができるように、OrderRepositoryを取得する方法を見つけようとしています(xml構成でそれを行う方法は既に知っています)。

@Configuration
@ComponentScan(basePackages = "com.sample.app")
@EnableJpaRepositories("com.sample.app")
@EnableTransactionManagement
public class AppConfig 
{

    @Bean
    public OrderService orderService()
    {
        return new OrderServiceImpl(orderRepository());
    }

    @Bean
    public OrderRepository orderRepository()
    {
        return ??? What goes here ???
    }
    ...
    }
4

1 に答える 1

3
@Configuration
@ComponentScan(basePackages = "com.sample.app")
@EnableJpaRepositories("com.sample.app")
@EnableTransactionManagement
public class AppConfig {

    @Autowired
    private OrderRepository orderRepository;

    @Bean
    public OrderService orderService() {
        return new OrderServiceImpl(orderRepository);
    }

}

そのようなものがうまくいくはずです。OrderServiceImplまたは、で注釈が付けられたフィールドを your 内に配置し、を受け取る@Autowiredコンストラクターを削除するだけorderRepositoryです。または、コンポーネント スキャンに依存して、@Beanメソッドをまとめて削除します。

component-scan と @Bean メソッドがある場合、そのようにサービスのインスタンスが重複する可能性があります (注釈が付けられている場合@Service)。

于 2013-10-01T06:09:15.750 に答える