浅谈springboot
springboot自动装配原理?
自动装配大致流程是通过@SpringBootApplication进行实现。@SpringBootApplication这其实是一个组合注解,有三个主要注解:
1.@SpringBootConfiguration 2.@ComponentScan 3.@EnableAutoConfiguration
@SpringBootConfiguration这个注解 这个其实就是上面介绍过的@Configuration的注解 用于定义bean的,springboot的启动类其实也就是作为spring的一个bean注入到spring容器中。
@ComponentScan 是spring中的注解 主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中。
@EnableAutoConfiguration这个注解 这个是开启自动装配的核心注解,他的作用就是获取配置类 扫描并注入IOC容器中进行管理,他也是组合注解:@AutoConfigurationPackage 和@Import
简而言之,就是Spring Boot在启动的时候就是从类路径下的META-INF/spring.factories中获取需要自动装配的类 (一些配置组件),找到这些类(XXXAutoConfiguration),通过SpringFactoriesLoader机制创建对应的bean,注入到容器中,完成了自动注入spring容器,本来需要在spring的xml配置文件中去配置bean的操作就免去了 ,也就是springboot完成了自动装配。
springboot打成jar包为什么能够通过java - jar去运行?
当你运行java -jar命令的时候,它会找META-INF文件下的MANIFEST.MF文件中的Main-Class,最后找到org.springframework.boot.loader.JarLauncher。
这个JarLauncher,翻译一下,叫做jar包启动器。
当你运行java -jar命令的时候,JarLauncher会将BOOT-INF/classes下的类文件和BOOT-INF/lib下依赖的jar包加载到classpath下。
最后调用META-INF下的MANIFEST.MF文件的Start-Class属性来完成应用程序的启动。
也就是说它是SpringBoot Loader提供了一套标准用于执行SpringBoot 打成的JAR包.
 

                    
                
                
            
        
浙公网安备 33010602011771号