嗨,朋友们,我正在开发一个基于maven的spring boot项目,这个项目是多模块的,其中一个模块是主模块,第二个模块是服务模块。我在主模块中有一个控制器,在Serivce模块中有一个服务
控制器
package com.aquevix.controller;
import com.aquevix.common.MyService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.inject.Inject;
/**
* Created by mohdqasim on 11/9/15.
*/
@RestController
@RequestMapping("/api")
public class MyController {
@Inject MyService myService;
@Inject BookRepository bookRepository;
@RequestMapping(value = "/data" , method = RequestMethod.GET)
public String getData(){
return myService.getData();
}
}
服务
package com.aquevix.common;
import org.springframework.stereotype.Service;
/**
* Created by mohdqasim on 11/9/15.
*/
@Service
public class MyService {
public String getData(){
return "hello qasim";
}
}
在maven的多个模块中,这个场景可以很好地工作,但我还有一个以服务模块中的接口形式存在的存储库。
package com.aquevix.common;
import org.springframework.data.jpa.repository.*;
/**
* Spring Data JPA repository for the Book entity.
*/
public interface BookRepository extends JpaRepository<Book,Long> {
}
因此,当我从Main模块执行主类时,我的项目在服务模块中没有bookrepository(或存在于Main模块中)就可以正常工作,但是如果我把bookrepository放在服务模块中,那么MyController就不能在MyController中实例化bookRepository的依赖注入失败。有人能帮我如何避免这个故障吗?我把任何接口放在正在注入主模块的服务模块中
我遇到了一个类似的问题,并通过以下帖子解决了它:Spring Boot:autowire beans from library项目
简而言之,将此注释添加到应用程序中:
@Import(SharedConfigurationReference.class)
然后在您的服务项目中创建共享配置参考
类
package com.aquevix.common;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@Configuration
@ComponentScan("com.aquevix")
@EnableJpaRepositories("com.aquevix")
@EntityScan("com.aquevix")
public class SharedConfigurationReference {}
对于实体和组件扫描注释,请确保指定一个包,该包是所有项目的父级,即控制器和服务的父级
您需要像下面这样配置存储库位置:
@Configuration
@EnableJpaRepositories("com.aquevix.common")
class ApplicationConfiguration {
@Bean
public EntityManagerFactory entityManagerFactory() {
// …
}
}
更多关于使用Spring数据存储库的参考资料
唯一的问题是注入不同模块中的bean。这怎么能修好呢?
我有一个关于Maven依赖解析机制如何在多模块项目中工作的问题。 通常,我只在构建多模块项目时使用“mvn clean install”,我的假设是,如果项目中的任何模块需要以前的模块,依赖关系将通过访问本地存储库并加载相应的“jar”来解决。 由于项目内部原因,我必须使用“mvn清洁编译”,这个命令自然不会创建任何“jar”,而“install”不存在。所以在这里我开始想知道,多模块项目的依赖项
我正在使用STS 2.9.1(构建在Eclipse 3.7.2上)和与STS(V1.0.200.20111228-1245)绑定的m2e插件。 我有一个问题是包含多个模块的Eclipse项目中缺少依赖项,或者我不完全理解它应该如何工作。 这是一个maven项目。 在我的项目>Properties>Java Build Path>Libraries中,我有“maven dependencies”库,
我有一个多模块maven项目,包含三个模块、和 Core具有以下依赖项定义 我已经为所有三个模块添加了Java9定义,的如下所示: 但是,我不知道如何让的测试类能够在测试执行期间看到类。当尝试测试运行时,找不到类。 如果向的添加需要My.Project.TestUtils;的: 然后在编译时,我得到一个错误,即找不到模块(大概是因为它只是作为测试依赖项引入的)。 在Java9模块化的世界中,如何处
问题内容: 我试图弄清楚Maven多模块项目中的所有依赖项。首先,我使用appfuse创建了一个新的spring mvc多模块项目。它最初具有Web和核心模块。 我发现了部署此项目的知识。但是当我遇到错误时。我总是在哪里添加依赖项或插件感到困惑。我想澄清以下问题。 我创建了一个appfuse mvc多模块项目。我先安装了核心,然后在网上进行了maven jetty7:run(最初我在根文件夹上运行
我有一个多模块maven项目。请在父POM下方找到。 儿童POM如下所示。 我已经在parent中声明了从slf4j进行日志记录,但在eclipse中没有生成相同的maven依赖项,因此我无法在代码中使用日志记录。谁能告诉我这里出了什么问题吗。