多模块组件扫描在Spring Boot中不起作用

我有两个模块的网络和业务。我已将业务纳入网络。但是,当我尝试将业务到Web使用的服务接口包括在内时@autowired,它确实很实用org.springframework.beans.factory.NoSuchBeanDefinitionException

因此,基本上@SpringBoot" title="SpringBoot">SpringBootApplication无法扫描@Service来自业务模块。

这很简单,我想念吗?

如果我@Bean@SpringBootApplication该类中添加了该服务,它就可以正常工作。

码:

package com.manish;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication

public class SpringBootConfiguration {

public static void main(String[] args) {

SpringApplication.run(SpringBootConfiguration.class, args);

}

}

来自模块1的类,正在从中调用模块2的类:

package com.manish.controller;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import uk.co.smithnews.pmp.service.contract.UserRegistrationService;

@RestController

@RequestMapping("/testManish")

public class SampleController {

@Autowired

private SampleService sampleService;

....

}

单元2:

package com.manish.service;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

@Service

public class SampleServiceImpl implements SampleService {

}

谢谢,

回答:

@SpringBootApplication 仅扫描带有注释本身的类的包以及下面的所有包。

示例:如果带有SpringBootApplication批注的类在package中com.project.web,则将扫描此包以及下面的所有包。

但是,如果您的服务包中有服务,com.project.business则不会扫描bean。

在这种情况下,您必须将注释添加@ComponentScan()到应用程序类中,然后将要扫描的所有软件包都添加为该注释中的值,例如@ComponentScan({"com.project.web",

"com.project.business"})

以上是 多模块组件扫描在Spring Boot中不起作用 的全部内容, 来源链接: utcz.com/qa/426348.html

回到顶部