SpringBoot和SSM的区别+源码解析视频
现在的SpringBoot和SSM的区别在哪?
1.springboot是⼀个轻配置的框架,以前spring的配置有很多,很多bean的装配都没有写在配置⽂件⾥⾯,spring⼀开始为什么要把配置写在配置⽂件⾥⾯呢,实际上⼀开始的初衷是很好的,是为了解耦,以为代码经过编译之后是看不到的,但是配置⽂件编译后是能看到的,java ⽂件编译后变成class,但是配置⽂件编译后还是xml,通过xml我就能知道这个⼯程⾥⾯⼤概配置了那些东西,⽽且能解耦能调配,把所有的配置⽂件写在xml有好处,但是到了真正的项⽬⾥⾯会发现xml太重了,⾥⾯放置了太多的东西,但是其实真正要频繁去修改的东西没有那么多,可能⽤户数据库部分修改的⽐较多,但是例如视图解析器,SpringBoot中tampleaf就直接⽤了,不需要在⾃⼰去配置半天,如果最后⼜要求被改成jsp,那么就⾮常抓狂
2。如果两个Controller⾥⾯有写相同的url,启动会报错
如果Controller和WebConfiguration⾥⾯的addViewControllers中跳转url⼀样,那么启动不会报错,会被Controller⾥⾯的url所覆盖
Springboot源码解析视频:观后感⾃⼰总结
1-7基础铺垫
Initializer初始化意思就是:⼀个空房⼦⾥⾯什么都没有,往⾥⾯放点东西
1-1spi机制:tomcat实现servlet规范要实现⼀个ServletContainerInitializer接⼝,spi⾥⾯写着⾃⼰实现上⾯接⼝的位置,springs实现l⾥⾯的所有信息都要加载到ServletContext的上下⽂环境⾥⾯
1-2初始化容器:spring也要遵循Servlet规范 SpringServletContainerrInitializer也实现ServletContainerInitializer接⼝,然后初始化WebApplicationInitializer上下⽂环境,往⾥⾯加东西(bean,上下⽂环境)。通过实现WebApplicationInitializer,在其中可以添加servlet,listener等,在加载Web项⽬的时候会加载这个接⼝实现类,从⽽起到l相同的作⽤。
1-3认识ApplicationContext:是spring继BeanFactory之外的另⼀个核⼼接⼝或容器,允许容器通过应⽤程序上下⽂环境创建、获取、管理bean。为应⽤程序提供配置的中央接⼝。在应⽤程序运⾏时这是只读的,但如果实现⽀持这⼀点,则可以重新加载。ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径加载配置⽂件,后者默认从⽂件系统中装载配置⽂件
1-4BeanFactory和FactoryBean区别:BeanFactory是个Factory,也就是IOC容器或对象⼯⼚,Factory
Bean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进⾏管理的。但对FactoryBean⽽⾔,这个Bean不是简单的Bean,⽽是⼀个能⽣产或者修饰对象⽣成的⼯⼚Bean,它的实现与设计模式中的⼯⼚模式和修饰器模式类似。
BeanFactory:
BeanFactory定义了IOC容器的最基本形式,并提供了IOC容器应遵守的的最基本的接⼝,
也就是Spring IOC所遵守的最底层和最基本的编程规范。
在Spring代码中,BeanFactory只是个接⼝,
并不是IOC容器的具体实现,但是Spring容器给出了很多种实现,
如 DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等,都是附加了某种功能的实现。
FactoryBean:
⼀般情况下,Spring通过反射机制利⽤<bean>的class属性指定实现类实例化Bean,
在某些情况下,实例化Bean过程⽐较复杂,如果按照传统的⽅式,则需要在<bean>中提供⼤量的配置信息。
配置⽅式的灵活性是受限的,这时采⽤编码的⽅式可能会得到⼀个简单的⽅案。
Spring为此提供了⼀个org.springframework.bean.factory.FactoryBean的⼯⼚类接⼝,
⽤户可以通过实现该接⼝定制实例化Bean的逻辑。
FactoryBean接⼝对于Spring框架来说占⽤重要的地位,Spring⾃⾝就提供了70多个FactoryBean的实现。
它们隐藏了实例化⼀些复杂Bean的细节,
给上层应⽤带来了便利。从Spring3.0开始,FactoryBean开始⽀持泛型,即接⼝声明改为FactoryBean<T>的形式
视频⾥可以⽤User对象实现FactoryBean<User>接⼝,将其注⼊到容器,就可以通过SpringApplication.run⽅法拿到ApplicationContext,以调⽤该bean
1-5BeanDefinition:我们⼀般获取对象的⽅式有两种,⼀种是⼿动直接 new;另⼀种是交给 Spring 管理,Spring 将管理的对象称之为Bean,容器会先实例化 Bean,然后⾃动注⼊,实例化的过程就需要依赖 BeanDefinition。BeanDefinition ⽤于保存 Bean 的相关信息,包括属性、构造⽅法参数、依赖的 Bean 名称及是否单例、延迟加载等,它是实例化 Bean 的原材料,Spring 就是根据 BeanDefinition 中的信息实例化 Bean。
1-6,7bean的创建过程和PostProcessor后置处理器:beanFactoryPostProcessor可以对BeanDefinition在未实例化之前进⾏拓
展,BeanPostProcessor可在初始化前后进⾏⼲预
8-进⼊springboot源码阶段
1-8:SpringAplication构造:从SpringbootApplication启动类main⽅法中run进⼊,
实例化bean的三种方式最核⼼的⼀⾏代码刷新容器 338:refreshContext(context),⽽前⾯的⼀切都是再做准备(准备环境,上下⽂,上下⽂初始化)。最终进⼊到org\springframework\context\support\AbstractApplicationContext.java类中的refresh()⽅法⾥
1-13:Multicaster多路⼴播器:⾥⾯有很多的Listener,通过Listener去监听事件,观察者设计模式的核
1-14:包装类:利⽤反射进⾏包装类赋值更加⽅便
1-15:⾃动装配原理:(讲义⾃动装配):
版本1
Spring Boot启动的时候会通过@EnableAutoConfiguration注解到META-INF/spring.factories配置⽂件中的所有⾃动配置类,
并对其进⾏加载,⽽这些⾃动配置类都是以AutoConfiguration结尾来命名的,
它实际上就是⼀个JavaConfig形式的Spring容器配置类,
它能通过以Properties结尾命名的类中取得在全局配置⽂件中配置的属性如:server.port,
⽽XxxxProperties类是通过@ConfigurationProperties注解与全局配置⽂件中对应的属性进⾏绑定的
版本2
在运⾏main⽅法的时候会运⾏主类上重要的@EnableAutoConfigration 注解会导⼊⼀个⾃动配置选择器去扫描每个jar包的META-INF/xxxx.factories 这个⽂件,
这个⽂件是⼀个key-value形式的配置⽂件,⾥⾯存放了这个jar包依赖的具体依赖的⾃动配置类。
这些⾃动配置类⼜通过@EnableConfigurationProperties 注解⽀持通过xxxxProperties 读取application.l属性⽂件中我们配置的值。
如果我们没有配置值,就使⽤默认值,这就是所谓约定>配置的具体落地点。
整合版本1和2
Spring Boot启动的时候会运⾏主类上重要的@EnableAutoConfigration 注解会导⼊⼀个⾃动配置选择器去扫描每个jar包的META-INF/xxxx.factories 这个⽂件,
这个⽂件是⼀个key-value形式的配置⽂件,⾥⾯存放了这个jar包依赖的具体依赖的⾃动配置类,
且都是都是以AutoConfiguration结尾来命名的,它实际上就是⼀个JavaConfig形式的Spring容器配置类。
这些⾃动配置类⼜通过@EnableConfigurationProperties注解⽀持,
通过以xxxxProperties结尾命名的类中取得在全局配置⽂件中配置的属,
如application.l属性⽂件中我们配置的值。
如果我们没有配置值,就使⽤默认值,这就是所谓约定>配置的具体落地点。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。