我们正在构建一个使用以下 Java 堆栈的 Web 项目。它使用带有数据/业务/服务/网络/客户端层的 n 层。
Data layer - Java, JPA, Spring-data-JPA
Business layer - Java
Service layer - Java, Apache CXF (REST/SOAP) Webservices
Client layer - AngularJS, Bootstrap
我试图弄清楚如何在这些n层之间传递spring上下文。 我也尝试使用 Java 配置而不是 XML,所以很困惑。
在我早期的项目中,我们使用 XML 配置在 Web 层中创建 spring 上下文。
我尝试遵循本教程 http://source.lishman.com/project/689#card/5509/file/19177
我能够拥有一个独立的工作数据层。但不知道如何在业务层注入(inject)存储库??
下面的试验有效,但只有在业务层复制以下配置之后,我已经在数据层中定义/配置了
@Import(value = { DataSourceConfig.class, JpaConfig.class, RepositoryConfig.class })
业务层
配置
@Configuration
@Import(value = { DataSourceConfig.class, JpaConfig.class, RepositoryConfig.class })
public class ServiceConfig {
@Autowired
AirlineBusiness airlineBusiness;
@Bean
public AirlineBusiness getAirlineBusiness() {
return new AirlineBusinessImpl();
}
}
业务界面
@Service
public interface AirlineBusiness extends Serializable {
public List<Airline> findAll();
}
业务实现
@Service
public class AirlineBusinessImpl implements AirlineBusiness {
@Autowired
private AirlineRepository airlineRepository;
@Override
public List<Airline> findAll() {
return airlineRepository.findAll();
}
}
最佳答案
只需为每个层创建一个单独的配置类即可。在每个配置类中,从下面的层导入配置类(它是传递性的):
@Configuration
@Import(value = { DataSourceConfig.class, JpaConfig.class, RepositoryConfig.class })
public class DataConfig {
}
@Configuration
@Import(value = { DataConfig.class })
public class ServiceConfig {
}
关于java - 使用 Java 配置的 N 层 Web 应用程序中的 Spring 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970352/