我们可以发现,这个starter中又包含了若干个坐标,其实就是使用SpringMVC开发通常都会使用到Json,使用json又离不开这里面定义的这些坐标,看来还真是方便,SpringBoot把我们开发中使用的东西能用到的都给提前做好了。仔细看完会发现,里面有一些我们没用过的。的确会出现这种过量导入的可能性,不过没关系,可以通过maven中的排除依赖剔除掉一部分。不过你不管它也没事,大不了就是过量导入呗。
到这里基本上得到了一个信息,使用starter可以帮开发者快速配置依赖关系
starter与parent的区别朦朦胧胧中感觉starter与parent好像都是帮助我们简化配置的,但是功能又不一样:
starter是一个坐标中定了若干个坐标,以前写多个的,现在写一个,是用来减少依赖配置的书写量的
parent是定义了几百个依赖版本号,以前写依赖需要自己手工控制版本,现在由SpringBoot统一管理,这样就不存在版本冲突了,是用来减少依赖冲突的
温馨提示
SpringBoot官方给出了好多个starter的定义,方便我们使用,而且名称都是如下格式
命名规则:spring-boot-starter-技术名称
引导类介绍配置说完了,我们发现SpringBoot确实帮助我们减少了很多配置工作,下面说一下程序是如何运行的。目前程序运行的入口就是SpringBoot工程创建时自带的那个类了,带有main方法的那个类,运行这个类就可以启动SpringBoot工程的运行,我的是这个:
@SpringBootApplication
public class Springboot0101Application {
public static void main(String[] args) {
SpringApplication.run(Springboot0101Application.class, args);
}
写代码测试一下,先创建一个User类,把它放在容器中
@Component
public class User {
}
然后再写一个BookController类,也把它放在容器中
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping("/getBooks")
public String getBooks() {
System.out.println("springboot程序正在运行呢~");
return "Hello,SpringBoot is running";
}
}
看看我对应类的目录结构:
最后写代码测试一下:
@SpringBootApplication
public class Springboot0101Application {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext
= SpringApplication.run(Springboot0101Application.class, args);
BookController bookBean = applicationContext.getBean(BookController.class);
System.out.println("The message of bookBean : " bookBean);
User userBean = applicationContext.getBean(User.class);
System.out.println("The message of userBean : " userBean);
}
}
运行结果:
看到结果,小伙伴们不难猜想了——SpringBoot程序启动是创建了一个Spring容器对象吧?答案就是如此!
Springboot0101Application这个类在SpringBoot程序中是所有功能的入口,称这个类为引导类。
作为一个引导类最典型的特征就是当前类上方声明了一个注解@SpringBootApplication
点击进入@SpringBootApplication,我们可以看到:
这里面有我们之前学习SSM时用到的包扫描注解,再点击进入@SpringBootConfiguration内: