千锋广州Java的小编来给大家提供一些Java面试题中Spring部分答案,以供大家作为参考。
1.Spring框架是什么?
Spring是轻量级的面向切面和控制反转的框架。初代版本为2002年发布的interface21,Spring框架是为了解决企业级应用开发的复杂性的出现的,它可以帮助开发人员管理对象之间的关系。能实现模块与模块之间、类与类之间的解耦合,Spring是一个大杂烩,它集成其他许多框架,使其他框架能与spring结合搭配使用。
2.Spring常用的注解有哪些?
(1)@Controller
在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务bai处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活地获取到。
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式:
1)在SpringMVC 的配置文件中定义MyController 的bean 对象。
2)在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。
(2)@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
(3)@Resource和@Autowired
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。
(4)@ModelAttribute和 @SessionAttributes
代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法,可用于注解和方法参数中,可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。
@SessionAttributes即将值放到session作用域中,写在class上面。
具体示例参见下面:使用 @ModelAttribute 和 @SessionAttributes 传递和保存数据
(5)@PathVariable
用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。
(6)@requestParam
@requestParam主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”),它有三个常用参数:defaultValue = “0”, required = false, value = “isApp”;defaultValue 表示设置默认值,required 通过boolean设置是否是必须要传入的参数,value 值表示接受的传入的参数类型。
(7)@ResponseBody
作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
(8)@Component
相当于通用的注解,当不知道一些类归到哪个层时使用,如果有WEB开发架构中固定的层则使用更加语义化的注解@Repository注解于DAO层、@Service注解于Service层、@Controller 注解于Controller层
3.Spring框架有哪些好处?
Spring能有效地组织你的中间层对象,为模块之间降低耦合。还包括轻量级,面向切面,控制反转,都是Spring的好处
4.Spring IOC容器是什么?
IOC容器意味着将对象交给IOC容器接管,由这样一个容器帮助我们管理对象,而不是传统的由开发人员管理对象。IOC可以帮助我们注入属性给对象,需要的时候给我们。
5.Spring IOC有哪些好处?
降低模块与模块之间的耦合,降低类与类之间的耦合。让开发人员不再做重复的对象创建赋值等繁琐的操作,而是需要用到时由IOC容器创建好自己传递过来。
6.Spring支持哪些事务管理类型?
编程式事务管理,在代码中显式调用开启事务、提交事务、回滚事务的相关方法
声明式事务管理,底层是建立在 AOP 的基础之上。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
7.Spring MVC框架有什么用?
SpringMvc是轻量级、松耦合的MVC框架,提供模型-视图-控制器层的不同支持。