Java面题总结7

spring事务什么时候会失效

1:发生自调用,类里面使用this调用本类的方法()此时这个this对象不是代理类,而是UserService对象本身

2:方法不是public

3:数据库不支持事务

4:没有被spring管理

5:异常被吃掉,事务不会回滚或者抛出的异常没有被定义,默认为RuntimeException

什么是bean的自动装配,有哪些方式

开启自动装配,在xml配置文件<bean>定义autowire属性

XML 复制代码
<bean id="cutomer" class="com.xxx.xxx.Customer" autowire=""/>

autowire属性有五种装配的方式:

no-默认情况下,自动装配是通过ref属性手动设定的

byName根据类的属性名进行自动装配

XML 复制代码
Cutomer的属性名称是person,spring会将bean id为person的bean通过setter方法进行自动装配
<bean id="cutomer" class="com.xxx.xxx.Cutomer" autowire="byName"/>
<bean id="person" class="com.xxx.xxx.Person" />

byType根据bean的类型进行自动装配

XML 复制代码
Cutomer的属性名称是person,spring会将Person类型通过setter方法进行自动装配
<bean id="cutomer" class="com.xxx.xxx.Cutomer" autowire="byType"/>
<bean id="person" class="com.xxx.xxx.Person" />

constructor-类似byType,不过是应用于构造器的参数,如果一个bean与构造器参数的类型相同则进行手动装配,否则导致异常

XML 复制代码
Cutomer的属性名称是person,spring会将Person类型通过构造方法进行自动装配
<bean id="cutomer" class="com.xxx.xxx.Cutomer" autowire="construtor"/>
<bean id="person" class="com.xxx.xxx.Person" />

autodetect-如果有默认的构造器,则通过constructor方式进行自动装配,否则使用byType方式进行自动装配

@Autowired自动装配bean,可以在字段,setter方法,构造函数上使用

Sprin Spring MVC,Spring Boot有什么区别

spring是一个IOC容器,用来管理Bean,使用依赖注入实现控制反转,可以很方便的整合各种框架,提供AOP机制,方便将不同类不同方法中的共同处理抽取成切面,自动注入给方法执行

springmvc是spring对web框架的一个解决方案,提供了一个总的前端控制器Servlet,用来接受请求,然后定义一套路由策略,及适配执行handle,将handle结果使用视图解析式技术生成视图展现给前端

springboot是spring提供的一个快速开发工具包,让程序员能更方便,更快速的开发spring+springmvc应用,简化了配置,整合了一系列的解决方案

SpringMVC的工作流程

1:用户发送请求至前端控制器DispatcherServlet

2:DispatcherServlet收到请求调用HandlerMapping处理器映射器

3:处理器映射器找到具体的处理器,生成处理器及处理器拦截器一并返回给DispatcherServlet

4:DispatcherServlet调用HandlerAdapter处理器适配器

5:HandlerAdater经过适配调用具体的处理器(controller)

6:Controller执行完成返回ModelAndView

7:HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

8:Dispatcher Servlet将ModelAndView传给ViewReslover视图解析器

9:ViewReslove解析后返回具体View

10:DispatcherServlet 根据View进销存渲染视图

11:DIspatcherServlet响应用户

Spring MVC的主要组件

1、HandlerMapping

处理器映射器,根据用户请求的资源uri来查找Handler

2、HandlerAdapter

适配器,让固定的Servlet处理方法调用灵活的Handler处理

3、HandlerExceptionResolver

根据异常设置ModelAndView,之后再交给render方法渲染

4、VIewResolver

用来将String类型的视图名和Locale解析为View类型的视图

5、RequestToViewNameTranslator

从request获取ViewName

6、LocaleResolver

用于从request解析出Locale

7、ThemeResolver

用于解析主题,主题对应properties文件

8、MuitipartResolver

用于处理上传请求,将普通的request包装成MuitpartHttpServletRequest

9、FlashMapManager

用来管理FaashMap

相关推荐
крон2 小时前
【Auto.js例程】华为备忘录导出到其他手机
开发语言·javascript·智能手机
zh_xuan2 小时前
c++ 单例模式
开发语言·c++·单例模式
coderSong25682 小时前
Java高级 |【实验八】springboot 使用Websocket
java·spring boot·后端·websocket
老胖闲聊3 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1183 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
Mr_Air_Boy3 小时前
SpringBoot使用dynamic配置多数据源时使用@Transactional事务在非primary的数据源上遇到的问题
java·spring boot·后端
曹勖之3 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
豆沙沙包?4 小时前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
军训猫猫头4 小时前
96.如何使用C#实现串口发送? C#例子
开发语言·c#
年老体衰按不动键盘4 小时前
快速部署和启动Vue3项目
java·javascript·vue