SpringBoot 2.0 系列005 --启动实战之SpringApplication应用
- 2.X 官方示例
注意是只使用了@EnableAutoConfiguration,默认是只扫描这一个我们自定义的类到bean中。不含子包和本包。下一篇我们分析原因。
package hello;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
- 拆分步骤
在之前的文章中我们提到,SB启动分为两步,new SpringApplication对象和执行run方法。
// 第一步
SpringApplication application = new SpringApplication(SpringBootApplication05.class);
// 第二步
ConfigurableApplicationContext context = application.run(args);
第一步
创建对象后 返回SpringApplication对象,我们来分析此对象有用的几个方法。
构造方法
实例化SpringApplication对象
public SpringApplication(Class<?>... primarySources) {
this(null, primarySources);
}
通过构造方法 我们发现是可以传递多个class对象,即除了传递启动类以外,我们也可以传递其他Class对象 可以是@configuration注解包含的对象 当然也可以是其他注解类型的。
- 示例
我们可以将UserService.class交给SpringBoot进行管理
SpringApplication application2=new SpringApplication(SpringBootApplication05_01.class,UserService.class);
addPrimarySources 方法
此种方式等价于构造方法方式。可实现多个class注入。
Set primarySources = new LinkedHashSet<>(Arrays.asList(SpringBootApplication05_01.class,UserService.class));
application.addPrimarySou