20230304学习笔记

目录

一、Mybatis #{}和${}的区别是什么 

二、ApplicationContext和BeanFactory有什么?

三、SpringBoot、SpringMVC、Spring有什么区别

四、SpringBoot 是如何启动Tomcat的

五、SpringBoot常用注解及其底层实现

六、SpringBoot中配置文件的加载顺序是怎样的?

七、SpringBoot自动配置原理(@Import+@Configuration+@java spi)

 八、SpringMVC的底层工作流程

九、SpringMVC的九大组件


一、Mybatis #{}和${}的区别是什么 

a、#{}是预编辑处理、是占位符,${}是字符串拼接符。

b、#{}替换为?号,用PreparedStatement来赋值,${}直接替换变量的值,用Statement赋值。

c、#{}在DBMS中、自动加入单引号,${}是DBMS外,不会加入单引号。

总结:#{}是线程防止SQL注入,提高系统安全性。

二、ApplicationContext和BeanFactory有什么?

a、扩展功能:

支持国际化、统一的资源文件访问方式、注册多个上下文、在监听器中注册bean事件、同时加载多个配置文件。

b、加载方式:

BeanFactory采用延迟加载、获取bean才初始化,ApplicationContext在启动容器时就加载所有Bean,及时发现存在的错误配置。

c、创建方式:

BeanFactory只能以编程的方式创建,ApplicationContext还支持以ContextLoader声明式创建。

d、注册方式:

BeanFactory是手动注册,ApplicatonContext是自动注册,都支持BeanPostProcessor、BeanFactoryPostProcessor的使用。

三、SpringBoot、SpringMVC、Spring有什么区别

a、Spring 是IOC容器,依赖注入实现控制反转,AOP弥补OOP代码重复问题。

b、SpringMVC是Spring  web框架一种解决方案,前端控制器接收请求,提供url路由策略及适配执行Handle,将Handle的视图解析技术生成视图展现给前端。

c、SpringBoot是Spring提供一个快速开发工具包,快速开发Web应用。约定大于配置、整理了一系列的解决方案、开箱即用、降低耦合度。

四、SpringBoot 是如何启动Tomcat的

a、启动Spring容器。

b、通过@ConditionalOnClass 查找ClassPath 是有Tomcat依赖,就创建Tomcat Bean。

c、启动完成后,创建Tomcat对象,绑定端口,启动Tomcat。

五、SpringBoot常用注解及其底层实现

a、@SpringBootApplication:

@SpringBootConfiguration:等同于@Configuration,表示启动类也是一个配置类。

@EnableAutoConfiguration: 向Spring容器中导入一个Selector ,在ClassPath下 SpringFactories中所定义的自动配置类,将这些自动加载为配置Bean

@ComponentScan: 标识扫描路径,默认扫描当前目录下的其它类。

b、@bean:方法名成BeanName。

c、@Controller、@Service、@ResponseBody、@RequestBody、@Autowired。

六、SpringBoot中配置文件的加载顺序是怎样的?

a、命令行参数。

b、java系统属性。

c、操作系统环境变量。

d、jar 外部applicton-{profile}.properties或application-{profile}.yml (带spring.profile)的配置文件。

e、jar 内部applicton-{profile}.properties或application-{profile}.yml (带spring.profile)的配置文件。

f、jar 外部applicton.properties或application.yml (不带spring.profile)的配置文件。

g、jar 内部applicton.properties或application.yml (不带spring.profile)的配置文件。

i、@Configuration 注解上的@PropertySource。

七、SpringBoot自动配置原理(@Import+@Configuration+@java spi)

a、@SpringBootConfiguration => @Configuration

b、@EnableAutoConfiguration:

i、@Import(EnableAutoConfigurationImportSelector.class)=> selectImports(字符串数组,类的全路径)通过SpringFactoriesLoader.loadFactoryNames加载META-INF/spring.factories中的EnableAutoConfiguration=>@Configuration+@Bean。

ii、@AutoConfigurationPackage=>@Import(AutoConfigurationPackages.Registrar.class)=>ImportBeanDefinitionRegistrar注册扫描到全局变量、提供查询。

c、@ComponentScan。

 八、SpringMVC的底层工作流程

a、用户发送请求给前端控制器DispatherServlet。

b、DispatherServlet收到请求调用HandlerMapping处理器映射器。

c、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

d、DispatcherServlet调用处理器适配器HandlerAdapter。

e、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

f、Controller执行完成返回ModelAndView。

g、HandlerAdapter将返回ModelAndView一并返回给DispatcherServlet。

h、DispatcherServlet将ModelandView传给视图解析器ViewSolver。

i、ViewSolver解析完后view返回给DispatcherServlet。

j、DispatcherServlet渲染视图。

k、DispatcherSevlet响应用户。

九、SpringMVC的九大组件

a、HandlerMapping。

b、HandlerAdapter。

c、HandlerExceptionResolver:统一的异常控制。

d、ViewResolver。

e、RequestToViewNameTranslator。

f、LocalResolver。

g、ThemeResolver:解析主题。

h、MultipartResolver:MultipartHttpServletRequest。

i、FlashMapManager:initFlashMapManager(context),用来管理FlashMap的,FlashMap主要用在redirect中传递参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值