Spring Boot文档阅读笔记-@SpringBootApplication官方解析与实例(1.5.19)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/88076235

目录

 

 

官方解析

博主例子


 

官方解析

@SpringBootApplication有如下3个特点:

1. @EnableAutoConfiguration: 能够启动Spring Boot的自动配置机制;

2. @ComponentScan: 能够在spring应用程序跑的那个包的位置上,扫描到其他的组建;

3. @Configuration: 允许在上下文中注册而外的beans,并且导入额外的配置文件;

@SpringBootApplication等于同时使用@Configuration, @EnableAutoConfiguration,@ComponentScan

package com.example.myproject;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {

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

}

@SpringBootApplication还提供了自定义@EnableAutoConfiguration和@ComponentScan注解的别名。

可以使用下面的例子来替代@SpringBootApplication。

package com.example.myproject;

import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {

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

}

在这个示例中,应用程序与任何其他Spring引导应用程序一样,但没有自动检测到@component注释的类,并且显式地导入了用户定义的bean(参见@Import)。

博主例子

这里以Spring Boot 1.5.19为例:

程序结构如下:

源码如下:

HelloController.java

package com.IT1995.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){

        return "Hello World!";
    }
}

DemoApplication.java

package com.IT1995.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class DemoApplication {

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

}

程序运行截图如下:

当把@SpringBootApplication改为@EnableAutoConfiguration、@ComponentScan、@Configuration

后,如下图:

同样可以跑的,并且没有报错,运行截图如下:

下面来演示下这个特点:

@ComponentScan: 能够在spring应用程序跑的那个包的位置上,扫描到其他的组建;

正确的包结构如下:

当包结构是这样的时候,@SpringBootApplication就扫描不到!

@Controller等注解了!

如下:

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/88076235