1.Spring中AOP的应用场景、优点?
答:AOP–面向切面编程;是通过动态代理的方式将代码切入到类的指定方法、指定位置上的编程思想,或者说是一种通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的技术。具体可以在下面的场景中使用:

Authentication 权限、Caching 缓存、Context passing 内容传递、Error handling 错误处理、Lazy loading懒加载、Debugging调试、logging日志、tracing跟踪 、Performance optimization性能优化、Persistence 持久化、Resource pooling资源池、Synchronization同步、Transactions 事务

优点:1.业务隔离,降低耦合性
2.易扩展,不修改源代码

2.Spring中IOC的作用与原理?对象创建的过程。

答:IOC控制反转。在传统的程序设计过程中,通常由调用者来创建被调用者的实例对象。但在Spring中,创建的控制权交给了Spring的IOC容器来完成,然后注入给调用者直接使用。

3.介绍spring框架

答:是轻量级的IoC和AOP的容器框架。是面向Bean的编程。实现了组件的解耦,和在不修改源代码的情况下给程序动态添加功能的一种技术框架。

4.Spring常见创建对象的注解?

答:@Component
@Repository:用于标注DAO类
@Service:用于标注Service类
@Controller:用于标注Action类
@Autowired 实现Bean的自动装配,默认按类型匹配
@Qualifier(“userDao”) @Resource(name=”userDao”)按Bean的名称装配
@Scope(“prototype”) 指定Bean的作用域

5.Spring中用到的设计模式

答:抽象工厂、工厂方法、单例模式、适配器模式、装饰模式、代理、观察者、策略模式,模板方法

6.Spring的优点?

答:1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
2.可以使用容易提供的众多服务,如事务管理,消息服务等
3.容器提供单例模式支持
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供了众多的辅助类,能加快应用的开发
6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring的DI机制降低了业务对象替换的复杂性

7.Spring Bean的作用域之间有什么区别?

答:Singleton:在Spring容器中仅存在一个共享的Bean实例,单例。 框架默认创建对象是单例的
Prototype:每次从容器中都获取一个新的实例,相当于new,多例
二者选择的原则:有属性的bean使用Prototype,无属性的bean则使用singleton
Request:每次HTTP请求都会创建一个新的Bean实例,在请求完成以后,bean会随之失效
Session:同一个HTTP请求共享一个Bean实例,在session过期后,bean会随之失效。
global session:同一个全局Session共享一个Bean实例

8.Spring管理事务有几种方式?

答:有两种方式:

1、编程式事务,在代码中硬编码。(不推荐使用)

2、声明式事务,在配置文件中配置(推荐使用)

声明式事务又分为两种:

a、基于XML的声明式事务

b、基于注解的声明式事务

9.spring中自动装配的方式有哪些?

答:1、 No:即不启用自动装配。

2、 byName:通过属性的名字的方式查找JavaBean依赖的对象并为其注入。比如说类Computer有个属性printer,指定其autowire属性为byName后,Spring IoC容器会在配置文件中查找id/name属性为printer的bean,然后使用Seter方法为其注入。

3、 byType:通过属性的类型查找JavaBean依赖的对象并为其注入。比如类Computer有个属性printer,类型为Printer,那么,指定其autowire属性为byType后,Spring IoC容器会查找Class属性为Printer的bean,使用Seter方法为其注入。

4.constructor:根据构造方法的参数类型来装配。它针对构造方法。找不到抛异常

5.default 全局自动装配:声明default-autowire=”byName”放到beans里

10.spring中的核心类有那些,各有什么作用?

答:BeanFactory:产生一个新的实例,可以实现单例模式

BeanWrapper:提供统一的get及set方法

ApplicationContext:提供框架的实现,包括BeanFactory的所有功能

11.Bean的调用方式有哪些?

答:有三种方式可以得到Bean并进行调用:
1、使用BeanWrapper
HelloWorld hw=new HelloWorld();
BeanWrapper bw=new BeanWrapperImpl(hw);
bw.setPropertyvalue(”msg”,”HelloWorld”);
system.out.println(bw.getPropertyCalue(”msg”));
2、使用BeanFactory
InputStream is=new FileInputStream(”config.xml”);
XmlBeanFactory factory=new XmlBeanFactory(is);
HelloWorld hw=(HelloWorld) factory.getBean(”HelloWorld”);
system.out.println(hw.getMsg());
3、使用ApplicationConttext
ApplicationContext actx=new FileSystemXmlApplicationContext(”config.xml”);
HelloWorld hw=(HelloWorld) actx.getBean(”HelloWorld”);
System.out.println(hw.getMsg());

12.AOP 的实现原理

答:Spring的AOP默认实现为动态AOP,实现的技术: JDK动态代理技术 和 CGLIB技术(动态字节码增强技术) 。尽管实现技术不一样,但都是基于代理模式 , 都是生成一个代理对象 。
JDK动态代理技术:主要使用到 InvocationHandler 接口和 java.lang.reflect.Proxy类的newProxyInstance() 方法。通过使用接口,使系统松耦合
CGLIB(动态字节码增强技术):是继承被代理对象,然后Override需要被代理的方法。使用继承,代码写起来更简单

14.springMVC的流程?
请求–》前端控制器–》后端控制器–ModelAndView–》前端控制器–》View–>响应
答:1、 首先用户发送请求到前端控制器DispatcherServlet,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它。
2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);
3、 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;
4、 前端控制器再次收回控制权,将响应返回给用户。

13.Springmvc的优点

答:1、它是基于组件技术的,方便开发 2、易于扩展 3、支持各种请求资源的映射策略

14.SpringMVC与SpringBoot区别

Spring MVC是基于Servlet 的一个松耦合的 MVC 框架,主要解决WEB 开发的问题。
而Spring boot,遵循约定优于配置,简化了spring的配置流程。是基于Spring4的条件注册的一套快速开发整合包。

更多推荐

Spring和SpringMVC相关面试题