美文网首页
springboot知识点1

springboot知识点1

作者: rice88 | 来源:发表于2022-05-26 00:08 被阅读0次

原发布在个人公众号 rice 若初见似少年 2020-08-24 00:26


最近在看小马哥的springboot编程思想,整理一些知识点。

小马哥是谁,当然不是pony啦,哈哈。


六大特性:

独立的spring应用

嵌入web容器

固化的starter

自动装配

提供运维特性

无代码生成且无需xml配置


扩展阅读servlet3.0规范,JSR-xxx(java规范)


启动springboot应用

启动命令:

java-jarrice-1.0.0-RELEASE.jar

启动原理:

java -jar会找到/META-INF/MANIFEST.MS的Main-Class属性,此属性值为org.springframework.boot.loader.JarLauncher,该类会引导执行MANIFEST.MS的属性Start-Class,此属性值为我们项目的启动类,如com.rice.demo.Application.java。

另外还有WarLauncher,该类启动的是war包。

war包可以嵌入servlet容器,使用java -jar启动,也可以丢到tomcat等容器,使用tomcat启动,tomcat是如何启动的,就要去翻tomcat源码了。

org.springframework.boot.loader.JarLauncher


自动装配

配置加载2种方式:

@Configuration注解可以被@ComponentScan扫到并解析,适用于包内。

spring.factories文件可以被@EnableAutoConfiguration扫到并解析,适用于包外。

注解驱动编程

jkd1.5开始引入注解 @Override @Deprecated。

springframework2.5开始引入@Autowired @Qualifier @Component @Service @Controller @RequestMapping等,要配合标签使用。

springframework3.0开始引入@Import @ImportResource。

springframework3.1开始引入@ComponentScan @Profile。

springframework4.0开始引入@Conditional。

spring注解具有派生性,如@Service @Controller @Repository都是由@Component派生而来的。springframework3.0仅支持2层派生,springframework4.0开始支持多层派生。


<context:component-scan>解析流程:META-INF/spring/context.xmlMETA-INF/spring.handlers配置文件中指定了命名空间处理器org.springframework.context.config.ContextNamespaceHandler命名空间处理器绑定了标签解析器org.springframework.context.annotation.ComponentScanBeanDefinitionParser该解析器在spring解析xml文件遇到component-scan标签时回调。


注解驱动设计模式

web自动装配基于Servlet3.0的API实现。

配置条件装配:

springframework3.1开始引入@Profile

springframework4.0开始引入@Conditional,并使用该注解重新实现了@Profile。

相关文章

网友评论

      本文标题:springboot知识点1

      本文链接:https://www.haomeiwen.com/subject/vezyprtx.html