大纲部分:可参考
一、依赖注入的三种方式:(1)接口注入(2)Construct注入(3)Setter注入
AbstractAutowireCapableBeanFactory进行构造和管理bean,其中,如果没有使用工厂或默认构造方法constructor-arg进行实例化,则默认使用cglib,而不是反射机制实例化bean。可参考,实例化后,开始装配bean(即赋值对象变量,或注解或xml配置成员变量参数),将注解或配置变量装配传递进去,其实实际的装配操作是通过AutowiredAnnotationBeanPostProcessor完成的(所有BeanPostProcessor实现类在bean实例化前后都会被调用对应方法)。
二、
请求拦截:过滤器(Filter,回调机制,职责链模式。拦截来自浏览器的请求)
AOP部分:分为两种,Spring AOP(动态代理模式,反射,由spring实现的一个aop,常通过注解或配置实现,可针对任意的方法并可反射获取该方法参数)和拦截器类(通过继承HandlerInterceptorAdapter实现。更精确拦截,请求前后做操作,获取request和response参数和返回的ModelAndView等)。
1、BeanFactoryPostProcessor和BeanPostProcessor的区别:Spring初始化bean的扩展点,在spring实例化任何bean之前读取元数据。可参考,PropertyResourceConfigurer 是BeanFactoryPostProcessor的一个实现类,来读取配置文件,提供构造参数中{name}这种实现。
2、了解Advice(通知)、Joinpoint(连接点)、Pointcut(切点)、Advisor(通知器)的概念。可参考
a、Advice(通知),定义具体要做什么,如上面所说的日志记录、安全控制。有时也称为“增强”,对目标方法进行功能增强。
b、Joinpoint(连接点),定义通知执行的代码位置,如在哪个方法执行。
c、Pointcut(切点),定义通知在哪些连接点上执行,即定义连接点的一个集合,通常配置一个正则表达式匹配一系列方法集合。
d、Advisor(通知器),将通知和切点关联起来,定义了哪个通知用于哪个切点。
3、AdvisedSupport存放包装了目标对象的TargetSource和其所有的Advisor,所以在JdkDynamicAopProxy获取代理对象并执行时,会去找对应的所有Advisor(有待验证这句话)。可参考文章,可参考,可参考2
三、监听事件 ApplicationListener 和 ApplicationEvent:
在ApplicationContext调用refresh()初始化时,会初始化listeners并放到集合中,当通过ApplicationContext.publishEvent(event);时,就会遍历所有listeners执行。其实就是用来观察者模式。
下面两个监听器也很好用,直接在web.xml配置就可以了:
如果你想让你的类监听应用的启动和停止事件,你就得实现ServletContextListener接口;
如果你想让你的类去监听Session的创建和失效事件,那你就得实现HttpSessionListener接口。
四、注解:
1)@Controller只是标记,真正@RequestMapping才是映射URL到对应的处理器。
2)@RequestParam绑定Request中的参数值到控制处理器的方法参数中。支持参数有HttpServlet类的,@ModelAttribute,spring的modeMap,MultipartFile上传文件,实体类等。而返回支持ModelAndView ,View 对象,String,void(已通过response返回),
3)@Autowired 可参考
4)@responsebody表示该方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
5)@Configuration和@Bean的使用,直接用代码来代替xml配置文件。spring扫描到该注解,会将对应的bean放到容器中。
1、介绍Spring的IOC和AOP,分别是如何实现的(反射机制和动态代理)
2、Redis如何处理分布式服务器并发造成的不一致,如果数据库不提供隔离呢?
3、解释MySQL索引、b树,为啥不用平衡二叉树或红黑树(磁盘与内存的存储方式不同)
4、Spring的bean加载机制,bean生成的具体步骤
5、IOC的注入方式(set注入、构造方法注入)
6、Spring何时创建applicationContext(web.xml中使用listener)
7、listener是监听哪个事件
8、SpringMVC的具体流程
9、Spring的特性,SpringMVC中控制器的名字及其配置
10、Spring用到哪些设计模式?
DispatcherServlet中HandlerAdapter适配器模式,
11、controller怎么处理的请求
相关推荐
python学习资源
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目
基于Andorid的音乐播放器项目设计(国外开源)实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
python学习资源
python学习资源
python学习一些项目和资源
【毕业设计】java-springboot+vue家具销售平台实现源码(完整前后端+mysql+说明文档+LunW).zip
HTML+CSS+JavaScarip开发的前端网页源代码
python学习资源
【毕业设计】java-springboot-vue健身房信息管理系统源码(完整前后端+mysql+说明文档+LunW).zip
成绩管理系统C/Go。大学生期末小作业,指针实现,C语言版本(ANSI C)和Go语言版本
1_基于大数据的智能菜品个性化推荐与点餐系统的设计与实现.docx
【毕业设计】java-springboot-vue交流互动平台实现源码(完整前后端+mysql+说明文档+LunW).zip
内容概要:本文主要探讨了在高并发情况下如何设计并优化火车票秒杀系统,确保系统的高性能与稳定性。通过对比分析三种库存管理模式(下单减库存、支付减库存、预扣库存),强调了预扣库存结合本地缓存及远程Redis统一库存的优势,同时介绍了如何利用Nginx的加权轮询策略、MQ消息队列异步处理等方式降低系统压力,保障交易完整性和数据一致性,防止超卖现象。 适用人群:具有一定互联网应用开发经验的研发人员和技术管理人员。 使用场景及目标:适用于电商、票务等行业需要处理大量瞬时并发请求的业务场景。其目标在于通过合理的架构规划,实现在高峰期保持平台的稳定运行,保证用户体验的同时最大化销售额。 其他说明:文中提及的技术细节如Epoll I/O多路复用模型以及分布式系统中的容错措施等内容,对于深入理解大规模并发系统的构建有着重要指导意义。
基于 OpenCV 和 PyTorch 的深度车牌识别
【毕业设计-java】springboot-vue教学资料管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
此数据集包含有关出租车行程的详细信息,包括乘客人数、行程距离、付款类型、车费金额和行程时长。它可用于各种数据分析和机器学习应用程序,例如票价预测和乘车模式分析。
把代码放到Word中,通过开发工具——Visual Basic——插入模块,粘贴在里在,把在硅基流动中申请的API放到VBA代码中。在Word中,选择一个问题,运行这个DeepSeekV3的宏就可以实现在线问答
【毕业设计】java-springboot+vue机动车号牌管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
【毕业设计】java-springboot-vue交通管理在线服务系统的开发源码(完整前后端+mysql+说明文档+LunW).zip