В @SpringBootApplication сканирование пакетов не работает - PullRequest
0 голосов
/ 01 мая 2018

У меня есть приложение весенней загрузки, которое использует другие модули, использующие зависимость maven.

Все модули имеют одинаковую структуру пакета.

Например: com.ams.web.model, com.ams.web.repository, com.ams.web.service и com.ams.web.websocket.

И у меня есть com.ams.web для конфигурации моего основного модуля springbootapplication с методом main. Но когда я пытаюсь запустить сервер, он терпит неудачу из-за проблем с автопроводкой. Это указывает на то, что приложение не может сканировать пакет из субмодулей. [Все необходимые классы имеют либо @Service, либо @Repository, либо @Component аннотацию, которая должна включать их для сканирования]

Как сканирование pacakge работает по умолчанию в приложении springboot, которое зависит от других модулей? Как включить сканирование пакетов других модулей из моего весеннего приложения.

Код:

package com.ams.web;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;

import org.apache.commons.io.IOUtils;
import org.apache.log4j.PropertyConfigurator;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.io.Resource;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.DelegatingFilterProxy;
import org.springframework.web.servlet.DispatcherServlet;

import com.ams.web.filters.AllRequestFilter;

@SpringBootApplication(scanBasePackages={"com.ams.web"})
public class WebInitializer extends SpringBootServletInitializer {

    public void onStartup(ServletContext servletContext) throws ServletException {
       AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
       context.register(ApplicationConfig.class);

       PropertyConfigurator.configure(loadLog4jProperties(context));
       String profile = loadProperties.getProperty("env.name", "app");

       System.out.println("Env Profile : " + profile);

        ConfigurableEnvironment environment = context.getEnvironment();
    environment.setActiveProfiles(profile);

        context.setServletContext(servletContext);


        servletContext.addFilter("AllRequestFilter", new AllRequestFilter()).addMappingForUrlPatterns(null, true, "/*");

        servletContext.addFilter("amsSpringAllRequestFilter", new AmsSpringAllRequestFilter()).addMappingForUrlPatterns(null, true, "/*");

        Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(context));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
    }

UrlList:

package com.ams.web.repository;

import java.util.concurrent.ConcurrentLinkedQueue;

import org.springframework.stereotype.Component;

import com.ams.web.environment.All;

@All
@Component
public class UrlList {

Моя пользовательская аннотация в другом модуле:

package com.ams.web.environment;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.context.annotation.Profile;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Profile( "app", "mock", "test")
@Component
public @interface All {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...