SpringBoot要求,项目要继承SpringBoot的起步依赖
spring-boot-starter-parent
SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖
引导类必须放在与controller等包同级目录
@ResponseBody 必须加上。
浏览器访问 : localhost:8080/quick 显示: hello SpringBoot
所有SpringBoog工程中,都要在pom.xml添加父工程依赖(spring-boot-starter-parent),后面进行源码分析以功能为单位,如需要web功能在浏览器进行访问,秩序添加依赖(spring-boot-starter-web)@SpringBootApplication,声明该类是SpringBoot的引导类 run方法运行SpringBoot引导类,参数是引导类的字节码对象
ps:IDEA进行SpringBoot进行热部署失败的解决方案
Setting -> Compiler -> Build project automatically然后 Shift+Ctrl+Alt+/,选择Registry,在列表中找到 compiler.automatically.allow.when.app.running 打钩 完成分析spring-boot-starter-parent spring-boot-starter-parent中也有父依赖spring-boot-starter-dependencies,从中可以看到一部分坐标的版本、依赖管理、插件管理已经定义好,所以我们的SpringBoot工程继承spring-boot-starter-parent后已经具备版本锁定等配置了。 所以起步依赖的作用就是进行依赖的传递。分析spring-boot-starter-web spring-boot-starter-web就是将web开发要使用的spring-web、spring-webmvc等坐标进行了“打包”,这样我们的工程只要引入spring-boot-starter-web起步依赖的坐标就可以进行web开发了,同样体现了依赖传递的作用。在以后需要添加的功能也是同理
@SpringBootApplication 注解 相当于配置三个注解
@AutoConfigurationPackage
将主配置类(@SpringBootApplication标注的类)同级目录下的所在包,及下面所有子包里面的所有组件扫描到Spring容器
@Import注解:
通过导入的方式实现把实例加入springIOC容器中
?AutoConfigurationImportSelector:
导入哪些组件的选择器
将所有需要导入的组件以全类名的方式返回;这些组件被添加到容器中。
会给容器中导入非常多的自动配置类(xxxAutoConfiguration);
就是给容器中导入这个场景需要的所有组件,并配置好这些组件。
在该类中获取全类名的方法中,调用
getCandidateConfigurations( … )
loadFactoryNames( … ) ,使用类加载器加载目标位置的资源(也就是需要导入的组件全类名),并存入Properties中返回
SpringBoot 在启动的时候,从springboot的autoconfigure包的类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值(组件全类名),将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作。
以前我们需要自己配置的东西,自动配置类帮我们做了(对比SSM中的各大配置属性)
static:保存所有静态资源,js,css,images;templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持jsp页面),可以使用模板引擎(freemarker,thymeleaf)application.properties:Spring Boot应用的配置文件;springboot自动配置原理