2015-10-12 2 views
6

У меня есть два модуля и бизнес. Я включил бизнес в сеть. Но когда я пытаюсь включить сервисный интерфейс из бизнеса в сеть, используя @autowired, он дает org.springframework.beans.factory.NoSuchBeanDefinitionException.многослойный компонентный сканер не работает в весеннем ботинке

Таким образом, в основном @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 { 
} 

Спасибо,

+0

Как вы создаете и запускаете приложение? Можете ли вы разместить свою конфигурацию сборки? – dunni

+0

Спасибо, dunni, в моем коде был тип, который вызывал проблему. Когда я пытался вставить код для вас, я понял это. – krmanish007

ответ

20

@SpringBootApplication только сканирует пакеты класса с аннотацией и всеми пакетами ниже.

Пример: Если класс с аннотацией SpringBootApplication находится в пакете com.project.web, то эти пакеты и все ниже, которые сканируются.

Однако, если у вас есть ваши услуги в пакете com.project.business, бобы не будут отсканированы.

В этом случае вы должны добавить аннотацию @ComponentScan() к вашему классу приложений и добавить все пакеты, которые вы хотите отсканировать в качестве значения в этой аннотации, например. @ComponentScan({"com.project.web", "com.project.business"}).

+2

мои мультимодули имеют тот же базовый пакет, и я сохранил свою конфигурацию в корне базы базы. Таким образом, это не должно вызывать беспокойства. – krmanish007

+0

Ну, тогда вам нужно предоставить больше информации о вашей структуре проекта и т. Д. Проверка компонентов не волнует, если ваши классы хранятся в разных JAR, если они находятся в пути к классам. – dunni

+0

Я добавил свой код, но все по-прежнему кажется довольно прямым. Спасибо – krmanish007

Смежные вопросы