SpringMVC怎么样设定重定向和转发的?

(1)转发:在返回值前面加”forward:”,譬如”forward:user.do?name=method4”
(2)重定向:在返回值前面加”redirect:”,譬如”redirect:http://www.baidu.com"

SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

是单例模式,所以在多线程访问的时候有线程安全问题。同时也不要用同步,会影响性能的。解决方案是在控制器里面不能写字段

SpringMVC常用的注解有哪些?

1
2
3
4
5
6
7
8
@RestController
控制器层中的方法无法返回jsp页面,或者html,配置的视图解析器(InternalResourceViewResolver)不起作用,返回的内容就是return里的内容字符内容。
@Controller
控制器层中的方法的return的数据(字符串或者ModelAndView)将成为逻辑视图名称,让视图解析器进行解析,成为jsp,html页面,并且跳转到相应页面。
@RequestMapping
映射请求,也就是通过它来指定控制器可以处理哪些URL请求,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。
@ResponseBody
注解实现将conreoller方法返回对象转化为json对象响应给客户。

说一说注解原理?

注解在我的理解下,就是代码中的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相对应的处理。注解就是一种标记,本身没有执行力,反射给了注解灵魂,让注解可以把标记变成现实意义。

Mybatis分为哪三层?

(1)API接口层:提供给外部使用的接口API
(2)数据处理层:负责具体的SQL
(3)基础支撑层:负责最基础的功能支撑,如连接管理,事务管理,配置加载和缓存处理

BeanFactory和ApplicationContext的区别?

BeanFactory:提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能

ApplicationContext:应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能

两者的区别:

(1)BeanFactory在启动的时候不会去实例化Bean,中有从容器中拿Bean的时候才会去实例化;
(2)ApplicationContext在启动的时候就把所有的Bean全部实例化了。

如何理解IoC和DI?

(1)IoC是一个概念,是一种思想,其实现方式多种多样。指将传统上由程序代码直接操作的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。

(2)DI实现IoC这种思想,是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。

Spring 事务实现方式有哪些?

编程式事务管理:这意味着你可以通过编程的方式管理事务,这种方式带来了很大的灵活性,但很难维护。
声明式事务管理:这种方式意味着你可以将事务管理和业务代码分离。你只需要通过注解或者XML配置管理事务。

Spring框架的事务管理有哪些优点?

(1)它为不同的事务API(如JTA, JDBC, Hibernate, JPA, 和JDO)提供了统一的编程模型。
(2)它为编程式事务管理提供了一个简单的API而非一系列复杂的事务API(如JTA). 它支持声明式事务管理。
(3)它可以和Spring 的多种数据访问技术很好的融合

有哪些不同类型的IOC(依赖注入)?

(1)构造器依赖注入:构造器依赖注入在容器触发构造器的时候完成,该构造器有一系列的参数,每个参数代表注入的对象。
(2)Setter方法依赖注入:首先容器会触发一个无参构造函数或无参静态工厂方法实例化对象,之后容器调用bean中的setter方法完成Setter方法依赖注入。
(3)注解注入:基于@Autowired的自动装配,默认是根据类型注入,可以用于构造器、字段、方法注入。

简述一下Spring框架?

概念
(1)Spring致力于Java EE应用的各种解决方案,是一款轻量级框架,大大简化了Java企业级开发,提
供了强大、稳定的功能。
(2)Spring主要有两个目标:一是让先有技术更易于使用,二是促进良好的编程习惯(或者称为最佳实
践)
优点
(1)轻量级:Spring在大小和透明性方面绝对属于轻量级的,基础版本的Spring框架大约只有2MB。
(2)控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
(3)面向切面编程(AOP):Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。
(4)容器:Spring包含并管理应用程序对象的配置及生命周期。
(5)MVC框架:Spring的web框架是一个设计优良的web MVC框架,很好的取代了一些web框架。
(6)事务管理:Spring对下至本地业务上至全局业务(JAT)提供了统一的事务管理接口。
(7)异常处理:Spring提供一个方便的API将特定技术的异常(由JDBC, Hibernate, 或JDO抛出)转化为一致的、Unchecked异常
(8)方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts2、Hibernate、MyBatis、Quartz等)的直接支持
(9)降低JavaEE API的使用难度:Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

说一说Spring框架中的bean的生命周期?

(1)Spring容器读取XML文件中bean的定义并实例化bean。
(2)Spring根据bean的定义设置属性值。
(3)如果该Bean实现了BeanNameAware接口,Spring将bean的id传递给setBeanName()方法。
(4)如果该Bean实现了BeanFactoryAware接口,Spring将beanfactory传递给setBeanFactory()方法。
(5)如果任何bean BeanPostProcessors 和该bean相关,Spring调用postProcessBeforeInitialization()方法。
(6)如果该Bean实现了InitializingBean接口,调用Bean中的afterPropertiesSet方法。如果bean有初始化函数声明,调用相应的初始化方法。
(7)如果任何bean BeanPostProcessors 和该bean相关,调用postProcessAfterInitialization()方法。
(8)如果该bean实现了DisposableBean,调用destroy()方法。