我有一個 Maven 專案,其結構大致如下:
project
|--.mvn
|--target
|--backend
| |--main
| | |--src/main/java/com.project
| | | |--controllers
| | | | |RestController.java
| | | |ProjectApplicationMain.java
| | |--src/main/resources
| | | |application.yaml
| | |--target
| | |pom.xml
|pom.xml
依賴關系定義在整個專案根目錄下的 pom.xml 檔案中,子模塊的 pom.xml 檔案只需使用
<relativePath>../../pom.xml</relativePath>
我希望使用在 RestController.java 類的 pom.xml 中定義的依賴項,但是在嘗試編譯代碼時出現以下錯誤:
Parameter 0 of constructor in com.project.controllers.RestController required a bean of type 'aClassFromTheDependency' that could not be found.
Action:
Consider defining a bean of type 'aClassFromTheDependency' in your configuration.
RestController.java 類看起來大致如下:
@RestController
@RequestMapping("/api")
public class RestController {
private final AClassFromTheDependency aClassFromTheDependency;
@Autowired
public RestController(AClassFromTheDependency aClassFromTheDependency) {
this.aClassFromTheDependency = aClassFromTheDependency;
}
@GetMapping("/make-request")
public ResponseDTO someApi() {
final ResponseDTO response = new ResponseDTO();
response.setResponse(aClassFromTheDependency.aMethodFromTheDependency());
return response;
}
}
此外,ProjectApplicationMain.java 看起來像這樣:
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
@EnableConfigurationProperties({
FileStorageProperties.class
})
@ComponentScan(basePackages = {"com.project"})
@EnableJpaRepositories(basePackages = {"com.project"})
@EntityScan(basePackages = {"com.project"})
@EnableCaching
public class ProjectApplicationMain {
public static void main(String[] args) {
SpringApplication.run(ProjectApplicationMain.class, args);
}
}
有什么想法在這里似乎是我根本無法創建依賴項類的實體并使用它的方法嗎?
uj5u.com熱心網友回復:
為了創建在第三方庫中定義的 bean(任何其他非自定義類,如 JDK 中的標準類),您可以@Bean在配置類中創建一個帶有注釋的方法。
@Configuration
public class MyConfig {
@Bean
AClassFromTheDependency aClassFromTheDependency() {
return AClassFromTheDependency.getInstance();
}
}
筆記
這不是在專案的每個包中搜索組件的最佳做法。
您不能在第三方類上放置注釋,因此無法通過
@ComponentScan.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/514374.html
標籤:爪哇春天弹簧靴行家
