2013-09-30 105 views
0

我想弄清楚如何获得OrderRepository的存储,以便我可以使用Spring的java配置将它传递到OrderServiceImpl的构造函数中(我已经知道如何用xml配置来实现)。如何使用Spring Java配置与Spring数据JPA存储库配置服务

@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 ??? 
    } 
    ... 
    } 

回答

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); 
    } 

} 

类似的东西应该工作。或者只需在的注释中添加一个字段,并删除构造函数,该构造函数需要orderRepository。或者依靠组件扫描并全部删除@Bean方法。

您有一个组件扫描和@Bean方法,您可能会以这种方式运行到您的服务的重复实例中(如果它注有@Service)。