1、 什么是spring?spring的两大核心技术是什么。
spring是一个开源的,轻量级的控制反转IoC和面向切面AOP的容器框架
IOC(控制反转)和DI(依赖注入)
AOP(面向切面编程)是面向对象编程的一个补充
2、Sring的优良特性:
Spring的优良特性
[1]非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API
[2]依赖注入:DI——Dependency Injection,反转控制(IOC)最经典的实现。
[3]面向切面编程:Aspect Oriented Programming——AOP
[4]容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期
[5]组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用XML和Java注解组合这些对象。
[6]一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring 自身也提供了表述层的SpringMVC和持久层的Spring JDBC)。
3、Spring框架有哪些主要模块?
核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。
4、什么是ioc,它有什么作用?
应用本身不负责创建依赖对象,把它交给外部容器的过程
作用:解耦
(1)xml配置文件(2)dom4j解析(3)工厂设计模式(4)反射
5、什么是DI,DI和ioc区别?
依赖注入,在运行期由外部容器动态地将依赖对象注入组件
6、什么是DI,DI和ioc区别?
IOC强调将对象的创建权反转到IOC容器中
DI强调IOC容器将对象的依赖关系动态注入对象之中
DI是IOC具体的实现过程
7、Bean的命名方式?
id、name
可以用name命名,和id一样都是不能有相同值的
name命名可以有多个值,中间用逗号隔开
id命名不可以有多个值
8、Bean的作用域 ?
Singleton、prototype、request、session、globalSession
Singleton:单例模式对象只实例化一次,一个应用只有一个对象的实例。它的作用范围就是整个引用。
prototype:多例模式调用一次bean就实例化一次
9、属性依赖注入有几种方式,分别怎么实现属性的依赖注入?
1、属性setter方法注入和p命名空间
2、构造参数注入和c命名空间
3、使用注解注入
10、注入的数据类型有三种:
1、基本类型和String类型
2、其他的bean类型(必须是在spring的配置文件中实现过的bean)
3、复杂类型(集合类型)
11、什么叫做装配,装配的方式有哪些?
由容器负责创建各个对象,并创建各个对象间的依赖关系。
XML显示装配
注解的方式自动装配
java代码装配
12、如何通过注解装配bean|实例化bean的注解有哪些?|通过注解实例化bean后在spring容器中bean的名称是什么?
@Controller:一般用于表现层的注解。
@Service:一般用于业务层的注解。
@Repository:一般用于持久层的注解。
@Autowired:自动按照类型注入。当使用注解注入属性时,set方法可以省略。它只能注入其他bean类型。
@Resource:按照名称查找找不到时用类型查找。
@Qualifier:在自动按照类型注入的基础之上,再按照Bean的id注入。它在给字段注入时不能独立使用,必须和@Autowire一起使用
@Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@pointcut:用于指定初始化方法。
接口实现类首字母小写
13、什么是aop,他的作用?
采取横向抽取机制取代了纵向继承体系的重复代码
作用:在修改原来代码的基础上实现功能的扩展
14、Aop的原理?
在运行期通过代理方式向目标类织入增强代码
15、什么是连接点?切入点? 什么是增强?什么是目标?什么是代理?什么是切面?
连接点:实际被增强的业务层方法
切入点:声明将要被增强的方法
增强/通知:要添加给业务方法的代码(增强代码在那个类那个类就是通知)
目标对象:连接点所在的对象
代理:一个类被织入增强后就产生一个结果代理类 生成的动态代理类
动态代理类=目标对象+增强代码
织入:将增强的方法添加到链接点的过程
切面:切入点和通知的结合 切入点+通知
动态代理常用的有两种方式
基于接口的动态代理
提供者:JDK官方的Proxy类。
要求:被代理类最少实现一个接口。
基于子类的动态代理
提供者:第三方的CGLib,如果报asmxxxx异常,需要导入asm.jar。
要求:被代理类不能用final修饰的类(最终类)。
16、如何通过xml配置的方式来配置aop?
aop:config
aop:aspect
aop:pointcut
aop:before</aop:aspect></aop:config>
17、如何通过注解的方式配置AOP?
<aop:aspectj-autoproxy>在xml中开启注解开关
@Aspect、@pointcut、@before……
18、AOP的增强类型和之间的区别?
环绕通知和前置、后置的区别:
环绕通知能决定是否调用目标方法、能修改返回值
返回通知和后置的区别:
返回通知可以获取到目标函数的返回值如果目标方法抛异常返回不执行
19、什么是事务,事物的特性?
一些操作要么全发生要么全不发生
原子性:事务中的操作要么全发生要么全不发生
一致性:事务前后数据的完整性保持一致
隔离性:数据库被多个用户访问此事物不能被其他事物干扰用户之间数据要隔离
持久性:一个事物一旦被提交它对数据的改变就是永久的
20、事物的隔离级别?
Isolation-default:数据库默认
Isolation-read-uncommitted:可能导致脏读不可重复读幻读
Isolation-read-committed:可以防止脏读
Isolation-prepeatable-read:可以防止脏读不可重复读
Isolation-seriablizable:完全服从ACID隔离级别
21、什么是事务传播行为? 有什么用?
新的事务是否要被启动或是挂起,或者方法是否要在事务环境中运行
22、什么是声明式事物?
基于Spring的aop配置控制,用注解的方式声明事务
23、怎样用xml配置事物?
事务管理器DataSourceTransactionManager、
事务通知tx:advicetx:attributestx:method
事务aop配置aop:configaop:pointcutaop:advisor
24、怎样用注解配置事物?
开启事务注解开关tx:annotation-driven
在要添加事务的类上添加@Transactional(propagation=Propagation.REQUIRED,
isolation=Isolation.DEFAUL)
Propagation:事务的传播行为
Isolation:事务的隔离级别
readOnly:只读
rollbackFor:发生哪些异常回滚
NoRollbackFor:发生哪些异常不回滚
rollbackForClassName:根据异常类名回滚
25、spring如何交给tomcat管理|spring在web.xml中如何配置。
ContextLoaderListener
contextConfigLocation
classpath:
org.springframework.web.context.ContextLoaderListener
26、sprinMVC如何交给tomcat管理|springMVC在web.xml中如何配置。
<servlet>
<servlet-name>
<servlet-class>
<init-param>
<param-name>
<param-value>
<load-on-startup>
<servlet-mapping>
<servlet-name>
<url-pattern>
27、什么是springMvc?
Web层的MVC框架,是一种设计模式设计思想
28、什么是mvc,mvc执行流程?
第一种理解:
1)客户端请求提交到DispatcherServlet
2)由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
3)DispatcherServlet将请求提交到Controller(也称为Handler)
4)Controller调用业务逻辑处理后,返回ModelAndView
5)DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
第二种理解:
1.用户发送请求到DispatchServlet
2.DispatchServlet根据请求路径查询具体的Handler
3.HandlerMapping返回一个HandlerExcutionChain给DispatchServlet
HandlerExcutionChain:Handler和Interceptor集合
4.DispatchServlet调用HandlerAdapter适配器
5.HandlerAdapter调用具体的Handler处理业务
6.Handler处理结束返回一个具体的ModelAndView给适配器
ModelAndView:model–>数据模型,view–>视图名称
7.适配器将ModelAndView给DispatchServlet
8.DispatchServlet把视图名称给ViewResolver视图解析器
9.ViewResolver返回一个具体的视图给DispatchServlet
10.渲染视图
11.展示给用户
29、springMvc的组件有哪些。
处理器映射器、处理器适配器、后端控制器、视图解析器
30、配置视图解析器有什么作用?
将逻辑视图解析成物理地址
@RequestMapping是什么?有什么作用?和属性。
@RequestMapping()是一个用来处理请求地址映射的注解,
value="/user",method=RequestMethod.POST
31、springMvc接收的参数类型有哪些?
简单类型、实体类、数组、Vo、map、默认类型
HttpServletRequest、HttpServletResponse、HttpSession、InputStream、OutputStream、Reader、Writer
@RequestParam绑定参数
@RequestHeader从头部信息绑定参数
@CookieValue从cookie中绑定参数
@PathVariable从URL中绑定参数
32、页面数据回显的方式?
ModelAndView、Model、map、request
33、ModelAndView和Model回显数据的区别有哪些?
Model:只用来传输数据,每次请求都必须会带的
ModelAndView:既包含视图信息也包含模型数据信息,需要自己新建的
二者API不同
34、handler方法入参上的注解有哪些,分别有什么作用。
@RequestParam指定参数
@PathVariable从URL绑定参数
35、handler方法如何返回json格式的数据
使用response返回json
在方法上添加@ResponseBody
配置处理器适配器
36、springMVC能否实现请求转发与重定向,语法结构是什么?
请求转发Forward:/路径地址
重定向Redirect:/路径地。
请求转发:url地址不变,只请求一次,可以获取第一次请求中的参数;只能站内转发。
重定向:url地址变请求两次,不能获取第一次请求中的参数。可以跳转到站外的地址。
37、spirngMVC如何配置统一编码,
jsp页面编码方式为UTF-8
formbiandan的提交方式为post
在web.xml里边添加过滤器编码
38、springMVC统一异常处理的思路。
系统的dao、service、controller出现异常都向上抛最后由SpringMVC前端控制交由异常处理器进行异常处理
39、<mvc: annotation-driven/>是一种简写形式,替代了什么配置。
替代了处理器映射器和处理器适配器
40、当DispatcherServlet请求映射配置为"/"时,如何实现静态资源的放行?
<servlet-mapping>
<servlet-name>default</>
<url-pattern>*.js</>
<mvc:resources location="/easyUI/" mapping="/easyUI/**"/>
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:default-servlet-handlet/>
41、什么是restful风格,在restful风格开发中,四个请求方式的动词分别表示什么操作?
约定大于规范
Get:查询
POST:添加
PUT:更新
DELETE:删除
42、springMvc是如何实现提交put和delete请求的
在web.xml中配置拦截headerHTTPMethodFile
在表单中写<input type=”hidden”name=”_method”value”delete/put”/>
43、如何让springMVC支持文件上传
提交类型必须为file类型,提交方式为post,form表单中添加enctype=multipart/form-data在springMVC中配置CommonsMultipartResolver的beanName= defaultEncoding,value=UTF-8
44、springMVC支持多视图解析吗?
支持