简体   繁体   English

将另一个Spring MVC项目添加为依赖项后,Spring Boot无法找到适当的URL映射

[英]Spring boot can't find the appropriate URL mapping after adding another spring MVC project as a dependency

I am working on a spring boot project which takes service from another spring mvc project. 我正在一个Spring Boot项目中,该项目需要另一个Spring MVC项目的服务。 Before I add the service project, URL mapping works perfectly for the spring boot project. 在添加服务项目之前,URL映射可以完美地用于spring boot项目。 But after adding the spring MVC project as a dependency and scanning all the components and mappers, that project can't determine the URL mapping. 但是,在将spring MVC项目添加为依赖项并扫描了所有组件和映射器之后,该项目无法确定URL映射。 (two projects have no any compile error) (两个项目没有任何编译错误)

This is my controller for spring boot project 这是我的Spring Boot项目控制器

@Controller
public class PriceFactorController {

    private static final Logger logger = LoggerFactory.getLogger(PriceFactorController.class);


/*

  @Autowired
    PriceAggregator2 priceAggregator2;
*/

    @GetMapping("/price")
    public ModelAndView priceGet() {
        ModelAndView modelAndView = new ModelAndView();
        PriceSearch priceSearch = new PriceSearch();
        modelAndView.addObject("priceSearch", priceSearch);
        modelAndView.setViewName("price");
        return modelAndView;
    }

    @PostMapping("/price")
    public ModelAndView pricePost(
            @Valid @ModelAttribute("priceSearch") PriceSearch priceSearch,
            BindingResult bindingResult,
            Model model) {

        priceSearch.makeDestinationList();
        priceSearch.makeTravellerList();

        //  List<PricingResult> resultSet=priceAggregator2.getPriceResultList(priceSearch.getPriceSearchDTO());

        ModelAndView modelAndView = new ModelAndView();
        logger.debug(priceSearch.toString());
        if (bindingResult.hasErrors()) {
            modelAndView.setViewName("price");
        } else {
            modelAndView.setViewName("redirect:/result");
        }
        return modelAndView;
    }


    @GetMapping("/result")
    public ModelAndView priceResult(
            @RequestParam(value = "key", required = false) String key,
            Model model) {
        Result result = new Result();
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("result", result);
        modelAndView.setViewName("result");
        return modelAndView;
    }
}

But it doesn't seems to look for this controller, Here are my logs.. 但是它似乎并没有在寻找这个控制器,这是我的日志。

2018-05-28 16:42:15.114 DEBUG 27866 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/price]
2018-05-28 16:42:15.115 DEBUG 27866 --- [nio-8080-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /price
2018-05-28 16:42:15.115 DEBUG 27866 --- [nio-8080-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/price]
2018-05-28 16:42:15.115 DEBUG 27866 --- [nio-8080-exec-3] o.s.w.s.handler.SimpleUrlHandlerMapping  : Matching patterns for request [/price] are [/**]
2018-05-28 16:42:15.115 DEBUG 27866 --- [nio-8080-exec-3] o.s.w.s.handler.SimpleUrlHandlerMapping  : URI Template variables for request [/price] are {}
2018-05-28 16:42:15.115 DEBUG 27866 --- [nio-8080-exec-3] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapping [/price] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[ServletContext resource [/], class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@45cc601]]] and 1 interceptor
2018-05-28 16:42:15.115 DEBUG 27866 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : Last-Modified value for [/price] is: -1
2018-05-28 16:42:15.116 DEBUG 27866 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling
2018-05-28 16:42:15.116 DEBUG 27866 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : Successfully completed request
2018-05-28 16:42:15.116 DEBUG 27866 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/error]
2018-05-28 16:42:15.116 DEBUG 27866 --- [nio-8080-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /error
2018-05-28 16:42:15.117 DEBUG 27866 --- [nio-8080-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Returning handler method [public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)]
2018-05-28 16:42:15.117 DEBUG 27866 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : Last-Modified value for [/error] is: -1
2018-05-28 16:42:15.131 DEBUG 27866 --- [nio-8080-exec-3] o.s.w.s.v.ContentNegotiatingViewResolver : Requested media types are [text/html, text/html;q=0.8] based on Accept header types and producible media types [text/html])
2018-05-28 16:42:15.134 DEBUG 27866 --- [nio-8080-exec-3] o.s.w.s.view.freemarker.FreeMarkerView   : No FreeMarker view found for URL: error.ftl
2018-05-28 16:42:15.134 DEBUG 27866 --- [nio-8080-exec-3] o.s.w.s.v.ContentNegotiatingViewResolver : Returning [org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelView@7be99ccd] based on requested media type 'text/html'
2018-05-28 16:42:15.134 DEBUG 27866 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : Rendering view [org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelView@7be99ccd] in DispatcherServlet with name 'dispatcherServlet'
2018-05-28 16:42:15.134 DEBUG 27866 --- [nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : Successfully completed request

Additionally, 另外,

package lk.xxc;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

//http://www.thymeleaf.org/doc/articles/layouts.html'
@MapperScan("com.xxc")
@ComponentScan(basePackages = {"com.xxc"})
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class })
public class SpringBootWebApplication {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SpringBootWebApplication.class, args);
    }

}

This is the dependency I added 这是我添加的依赖项

   <dependency>
            <groupId>com.xxc</groupId>
            <artifactId>price-engine</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

You would have to add the base packages for both projects. 您将必须为两个项目添加基本软件包。

@ComponentScan(basePackages = {"com.xxc", "lk.xcc"})
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class })
public class SpringBootWebApplication {

  public static void main(String[] args) throws Exception {
    SpringApplication.run(SpringBootWebApplication.class, args);
  }
}

This will scan components in both com.xxc and lk.xcc 这将扫描com.xxclk.xcc组件

Where is your @RequestMapping 您的@RequestMapping在哪里

@RestController
@RequestMapping("/api/v1/price-factor")
public class PriceFactorController{
.......
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM