SpringBoot--springboot启动类和controller的配置

一、controller和启动类在同一个class中

使用eclipse创建springboot项目时,会在默认的包下自动创建一个*Application.java的类,然后可以直接在这个类中配置controller并使用这个类启动项目。

@SpringBootApplication
@RestController
public class DemoApplication {
	@RequestMapping("/index")
    public String index() {
      
        return "this is index!";
    }


	public static void main(String[] args) {
		//SpringApplication.run(DemoApplication.class, args);
		SpringApplication application = new SpringApplication(DemoApplication.class);
		application.setBannerMode(Mode.OFF);//关闭banner
		application.run(args);
	}

}

这就是将controller和启动类放在一个类中的配置,直接点右键运行这个类就可以访问了!
二、将controller和启动类分开配置

因为将controller和启动类分开,所以首先要新建一个controller类

@RestController
public class HelloWorldController {
	@RequestMapping("/hello")
	public String hello(){
		return "hello World!";
	}
}

我不改变启动类的位置,但是启动类中只要一个main方法即可,如下:

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		//SpringApplication.run(DemoApplication.class, args);
		SpringApplication application = new SpringApplication(DemoApplication.class);
		application.setBannerMode(Mode.OFF);//关闭banner
		application.run(args);
	}

}

SpringBoot--springboot启动类和controller的配置
此时启动类的位置高于controller
三、启动类放在任意包下面,我是放在创建项目默认包中,这样只需在启动类上增加注解@ComponentScan即可,其中的(basePackages = {“com.xiao”})是需要扫描的包名,可以是多个,如(basePackages = {“com.xiao”,“com.example”})等,这就意味着mvc容器会去这些包下面扫描,进而找到controller等资源。
建一个测试controller在任意位置

package com.xiao.controller;

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

@RestController
public class demoController {
	@RequestMapping("/demo")
	public String demo(){
		return "this is demo!";
	}
}

此时启动类增加注解

@ComponentScan(basePackages = {"com.xiao","com.example"})
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		//SpringApplication.run(DemoApplication.class, args);
		SpringApplication application = new SpringApplication(DemoApplication.class);
		application.setBannerMode(Mode.OFF);//关闭banner
		application.run(args);
	}

}
综上所述,springboot的配置有以下三种:

1、当启动类和controller在同一类中时,需要在该类上添加注解@Controller;

2、当启动类和controller分开时,启动目录高于controller目录,启动类上只有注解@SpringBootApplication;

3、当启动类和controller分开时,如果启动类在某个包下,需要在启动类中增加注解@ComponentScan,配置需要扫描的包名;