×

spring boot自动配置

spring boot自动配置(SpringBoot.SpringMVC和Spring有什么区别)

admin admin 发表于2023-01-07 00:55:29 浏览33 评论0

抢沙发发表评论

本文目录

SpringBoot.SpringMVC和Spring有什么区别


“Spring Boot只是承载者,辅助你简化项目搭建过程的。如果承载的是WEB项目,使用Spring MVC作为MVC框架,那么工作流程和你上面描述的是完全一样的,因为这部分工作是Spring MVC做的而不是Spring Boot。”

Spring Boot实现了自动配置,降低了项目搭建的复杂度。

众所周知Spring框架需要进行大量的配置,Spring Boot引入自动配置的概念,让项目设置变得很容易。Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。

也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。

同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box)。

大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

Spring Boot只是承载者,辅助你简化项目搭建过程的。如果承载的是WEB项目,使用Spring MVC作为MVC框架,那么工作流程和你上面描述的是完全一样的,因为这部分工作是Spring MVC做的而不是Spring Boot。

对使用者来说:

换用Spring Boot以后,项目初始化方法变了,配置文件变了,另外就是不需要单独安装Tomcat这类容器服务器了,maven打出jar包直接跑起来就是个网站,但你最核心的业务逻辑实现与业务流程实现没有任何变化。



如何使用Spring Boot的自动配置


第一步,编写配置Bean——PrintAfterInitBean
代码如下,因为只是一个简单例子,这里的配置Bean其实可以是其他任何复杂配置Bean,例如DataSource。往往一个公共包需要多个这样配置Bean才能完成其配置。
public class PrintAfterInitBean implements InitializingBean {
private String message;
public void afterPropertiesSet() throws Exception {
System.out.println(message);
}
//setter getter
}
第二步,创建一个AutoConfiguration。
如果搜索Spring Boot下面的类,你会发现其实有很多名字形如xxxAutoConfiguration的类,这些类都是Spirng Boot为我们做的一些快捷配置类。 创建一个TestAutoConfig,作为一个自动配置类
@Configuration
public class TestAutoConfig {
@Bean
@ConfigurationProperties(prefix = “init“)
@ConditionalOnMissingBean(PrintAfterInitBean.class)
@ConditionalOnProperty(prefix = “init“,value = “message“)
public PrintAfterInitBean printAfterInitBean() {
return new PrintAfterInitBean();
}
}
@ConfigurationProperties 是Spring Boot提供的方便属性注入的注解,功能其实和@Value类似
@ConditionalOnMissingBean 表示当BeanFactory中没有PrintAfterInitBean类型的Bean才会创建,否则就会忽略这个Bean。这个就是上图中所谓的【满足自动配置条件】,同理的,ConditionalOnProperty表示当存在配置前缀为init,配置值为message的配置的时候,才会生效。@ConditionalOnXXX 系列的注解都是为了在自动配置中,不侵入用户的配置。
第三步,创建spring.factories
在resources下面创建META-INF/spring.factories, 然后在文件中把第二步的类配置进去
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.netease.xxx.xxx.UrsPropertyAutoConfig
这样就完成一个Spring Boot自动配置,如果存在init.message的配置,那么spring boot启动的时候就会打印init.message配置对应值。

既然有SpringBoot自动配置 SpringMVC里有哪些不用去了解


lz你好,以下是梦三国官方的配置要求
基本配置
CPU:P4 1.7GHz以上
内存:1G
显卡:GeForce6600或以上性能显卡(64MB显存)
硬盘:4G以上空间
操作系统:Windows2000/WindowsXP
推荐配置
CPU:P4 3.0GHz以上
内存:1G
显卡:GeForce6800或以上性能显卡(128MB显存)
硬盘:4G以上空间
操作系统:Windows XP/Windows Vista
梦三国作为一部国产类dota网游,已经运营了好多年了,对于机器的配置要求并不高,一般现在的电脑都能够带的动

你所理解的SpringBoot的自动配置是什么


SpringBoot采用**约定大于配置设计思想**,将所有可能遇到的配置信息提前配置好,写在自动配置的jar包中。每个Starter基本都会有对应的自动配置。
这意味着:日后我们在开发Spring应用程序的过程中,需要的配置项,由Pivotal团队的开发人员,帮我们写好了。怎么实现的?主要是通过@Configuration声明的配置类来实现。
SpringBoot帮我们将配置信息写好,存放在一个jar包中:spring-boot-autoconfigure-2.1.11.RELEASE.jar,jar包里存放的都是配置类,以及让配置类生效的“规则类“。
自动配置是SpringBoot中比较深奥的内容,相信你看完我的解释,肯定懵懵懂懂;就去黑马程序员官网视频库看免费视频。

springboot核心内容


Spring Boot框架的核心是自动配置。只要有相应的jar包,Spring就会帮助我们实现自动配置,而无需像以前我们使用spring框架一样要做很多配置。当默认配置不能满足我们要求的时候,我们能够用自己的配置来替换这些自动的配置类。此外,Spring Boot内嵌了web应用容器,除此之外还集成了系统监控等功能,这些都可以帮助我们快速搭建企业级的应用程序并使用。

springboot自定义配置文件数量是变化的,属性相同,只是值不一样,怎样绑定到实体类


有一个思路,在主要的配置文件(比如:application.yml、bootstrap.yml)中设置好需要动态加载的配置文件。然后在启动时通过读取此配置自动去加载动态的配置文件,从而生成你需要的实体类。

大致效果,仅供参考,有更好的方案,欢迎指出:

效果图

代码

主配置文件

配置文件


完整代码:
@Component
public class LoadDynamicConfigure {
@Value(“${resourcesPath}“)
private String resourcesPath;
@Bean
public void loadConfig() {
String yamlPathArray = resourcesPath.split(“,“);
for (String path : yamlPathArray) {
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
//yaml.setResources(new FileSystemResource(“classpath:config/user.yml“));//File路径引入
yaml.setResources(new ClassPathResource(path));//class路径引入
//转换成实体类
ConfigBean bean = (ConfigBean) JSONObject.toBean(JSONObject.fromObject(yaml.getObject()), ConfigBean.class);
//打印,查看效果
System.out.println(“测试读取配置----》“ + path + “ --》 “ + JSONObject.fromObject(bean).toString());
}
}
}



springboot启动过程是


总览:

上图为SpringBoot启动结构图,我们发现启动流程主要分为三个部分,第一部分进行、SpringApplication的初始化模块,配置一些基本的环境变量、资源、构造器、监听器,第二部分实现了应用具体的启动方案,包括启动流程的监听模块、加载配置环境模块。

及核心的创建上下文环境模块,第三部分是自动化配置模块,该模块作为springboot自动配置核心,在后面的分析中会详细讨论。在下面的启动程序中我们会串联起结构中的主要功能。

启动:

 每个SpringBoot程序都有一个主入口,也就是main方法,main里面调用SpringApplication.run()启动整个spring-boot程序,该方法所在类需要使用@SpringBootApplication注解。

以及@ImportResource注解(if need),@SpringBootApplication包括三个注解,功能如下:@EnableAutoConfiguration:SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置。

@SpringBootConfiguration(内部为@Configuration):被标注的类等于在spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个spring的上下文环境。

@ComponentScan:组件扫描,可自动发现和装配Bean,默认扫描SpringApplication的run方法里的Booter.class所在的包路径下文件,所以最好将该启动类放到根包路径下。


springboot三大核心注解是什么


springboot三大核心注解是Configuration,EnableAuto,ComponentScan。SpringBoot最大的特点是无需XML配置文件,能自动扫描包路径装载并注入对象,并能做到根据classpath下的jar包自动配置。

springboot三大核心注解特点

Configuration就要提到他的搭档@Bean,使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件,这个注解类标识这个类可以使用SpringIoC容器作为bean定义的来源。

@Bean注解告诉Spring一个带有@Bean的注解方法将返回一个对象,该对象应该被注册为在Spring应用程序上下文中的bean,能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。