Spring、Spring MVC和Spring Boot有什么区别?
Spring是一个Ioc容器,用来管理Bean,使用依赖注入实现控制反转,可以很方便的整合各种框架,提供AOP机制弥补OOP的代码重复问题、更方使将不同类不同方法中的共同处理抽取成切面、自动注入给方法执行,比如日志、异常等。
SpringMVC是 spring对web框架的—个解决方案,提供了一个总的前端控制器 Servlet,用来接收请求,然后定义了套路由策略(url到 handle的映射)及适配执行 handle,将 handle结果使用视图解析技术生成视图展现给前端
SpringBoot,是 spring提供的一个快速开发工具包,让程序员能更方便、更快速的开发 Spring+ SpringMVC应用,简化了配置(约定了默认配置),整合了一系列的解决方案( starter机制)、 redis、 mongodb、es,可以开箱即用。
SpringBoot核心注解
@SpringBootApplication其实是一个组合注解,这里重点的注解有3个:
@SpringBootConfiguration:声明配置类
@EnableAutoConfiguration:开启自动配置
@ComponentScan:开启注解扫描(扫描与其同级)
@SpringBootConfiguration注解:注解中应用了@Configuration注解,其作用就是声明当前类是一个配置类@SpringBootConfiguration用来声明当前类是SpringBoot应用的配置类,项目中只能有一个,一般我们无需自己添加。
@EnableAutoConfiguration注解:注解中的@Import注解,其作用是当前配置文件中引入其他配置类。这里引入了AutoConfigurationImportSelector类,在这个类中有相应的方法用来加载文件(spring.factories)中的配置,之后@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IOC容器中,进而实现@EnableAutoConfiguration自动配置的功能。
加载的文件:(spring-boot-autoconfigure.jar/META-INF/*)
SpringBoot内部对大量的第三方库或Spring内部库进行了默认配置,这些配置是否生效,取决于我们是否引入了对应库所需的依赖,如果有那么默认配置就会生效。我们在使用SpringBoot构建项目时,只需要引入所需依赖,配置部分交给了SpringBoot处理。
@ComponentScan注解:类似与<context:component-scan>标签,通过basePackageClasses或者basePackages属性来指定要扫描的包。如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包,而我们的@ComponentScan注解声明的类就是main函数所在的启动类,因此扫描的包是该类所在包及其子包。一般启动类会放在一个比较浅的包目录中。
关闭某个自动配置的选项:@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
Spring是一个IoC容器,实现依赖注入和AOP。SpringMVC是Spring的Web解决方案,提供路由和视图解析。SpringBoot是快速开发工具,简化配置并提供starter组件。它通过@SpringBootApplication注解实现自动配置,关闭自动配置可使用exclude属性。
857

被折叠的 条评论
为什么被折叠?



