java面试题:Spring框架常用面试题
说说什么Spring?
Spring是一套可以解决对象创建以及对象之间依赖关系的一种框架。且可以和其他框架一起使用;Spring与Struts, Spring与hibernate
说说SpringIOC、SpringAOP?
SpringIOC ,其实就是依赖注入、控制反转。相当于把每个bean与bean之间的关系交给第三方容器管理。而这个容器就是spring
SpringAOP 面向切面的编程,AOP是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。 SpringAop 就是用 Java的动态代理
Spring的底层实现机制是什么?
使用Demo4j
(解析XML
)+Java反射机制Demo4j
其实就是解析XML
。使用反射机制实例化bean
。
SpringAOP用到了什么代理?
JDK动态代理
:对实现了接口的类生成代理CGLib代理
机制:对类生成代理
动态代理与静态代理区别?
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
动态代理:在程序运行时,运用反射机制动态创建而成。
Spring注入有那些方式?
Set注入
构造器注入
静态工厂的方法注入
实例工厂的方法注入
Spring有那些注解?
@Autowired
(按类型注入)@Service
(标示为注入为服务层)@Resource
(按名称注入)@Controller
(标识控制器bean id) @RequestMapping
(表示映射URL路径)
Spring提供了一站式解决方案:
1.Spring Core spring
的核心功能: IOC容器, 解决对象创建及依赖关系
2.Spring Web
Spring对web模块的支持。
可以与struts整合,让struts的action创建交给spring
spring mvc模式
3.Spring DAO
Spring 对jdbc操作的支持 【JdbcTemplate模板工具类】
4.Spring ORM
spring对orm的支持:
既可以与hibernate整合,【session】
也可以使用spring的对hibernate操作的封装
5.Spring AOP
切面编程
6.SpringEE
spring 对javaEE其他模块的支持
简述Spring的优缺点?
Spring 的优点??
1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
2.可以容易提供的众多服务,如事务管理,消息服务等
3.容器提供单例模式支持
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供了众多的辅助类,能加快应用的开发
6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring属于低侵入式设计,代码的污染极低
8.独立于各种应用服务器
9.spring的DI机制降低了业务对象替换的复杂性
10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部
缺点:
使用到了大量反射机制。反射机制非常占内存,