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