有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Springboot-Spring MVC应用程序中@Componenscan的java用法

我的问题是,我不知道如何为控制器包指定路径,以便在@componenscan注释中搜索其中的requestmapping注释,该注释位于主类中

项目结构: enter image description here

我的应用程序类:

package com.personalitymeet;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Configuration
@EnableAutoConfiguration
@ComponentScan()
@Controller
public class DemoApplication {

@ResponseBody
@RequestMapping("/")
String entry(){
    return "bla";
}
public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}
}

用户控制器。爪哇:

package com.personalitymeet.web;

import com.personalitymeet.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by mv on 15.09.2016.
 */

@Controller
public class UserController {

    @RequestMapping("/user")
    public String user(Model model){
        User user = new User();
        user.setFirstname("Misi");
        user.setLastname("Varga");
        model.addAttribute("user",user);
        return "userview";
    }

}

所以,我的问题是,我如何告诉springboots它应该在Usercontroller类中搜索@Requestmapping注释


共 (3) 个答案

  1. # 1 楼答案

    您的问题不是@ComponentScan,它将在com.personalitymeet和所有子包中搜索。因为某种原因,你没有激活MVC基础设施

    您应该在build.gradle文件中将spring-boot-starter-web作为依赖项,并且应该将@EnableWebMvc添加到配置类中

  2. # 2 楼答案

    您可以将组件扫描指定到配置文件以扫描文件夹com.personalitymeet,它将自动选择具有相关注释的所有类

    下面是初始化应用程序所需的3个基本注释

    @Configuration
    @EnableWebMvc
    @ComponentScan(basePackages = "com.personalitymeet")
    
  3. # 3 楼答案

    你能替换这个代码吗

    @Configuration
    @EnableAutoConfiguration
    @ComponentScan()
    @Controller
    public class DemoApplication {
    ...
    

    使用此代码:

    @SpringBootApplication
    @Controller
    public class DemoApplication {
    ...
    

    配置应用程序以公开管理终结点:

    http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#production-ready
    

    然后点击此端点以查看应用程序公开的端点:

    http://localhost:[port]/manage/mappings 
    

    此外,我建议为根目录创建一个单独的控制器,以使启动类与应用程序逻辑保持一致