java面试(spring)

阅读更多

1.什么是IOC

    IOC:inversion of control    反转控制。

    通俗的说:以前创建一个对象需要自己主动new一个对象,通过IOC,对象的创建交给Spring框架创建,开发人员直接使用已经创建好的对象。

2.什么是DI

    DI:Dependency Injury    依赖注入。

    通过IOC创建对象的时候,可以注入字符串甚至其他对象。比如:DAO就会注入session factory。通常IOC和DI是紧密结合,一起使用的。

    在Java中依赖注入有以下三种实现方式:

  1. 构造器注入
  2. Setter方法注入
  3. 接口注入

3.什么是AOP

    AOP:面向切面编程。

    把功能划分为核心业务功能和其他的周边辅助功能,比如:日志,性能统计,事务等。其他的周边辅助功能可以看作切面功能。核心功能和切面功能分别独立开发,通过面向切面编程,可以把核心业务功能和切面功能根据需求结合在一起。

4.spring的优点

    1.降低了组件之间的耦合性,实现了软件各层之间的解耦。

    2.提供众多服务,如:事务管理,消息服务等

    3.容器提供单例模式支持

    4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能

    5.spring对主流的应用框架提供了集成支持

    6.spring的高度开发性,并不强制应用完全依赖于spring,开发者可以自由选择spring的部分或全部

5.简单描述一下IOC的理解

    1.一个类需要用到某个接口的方法,我们需要将类A和接口B的实现类关联起来,最简单的方法就是类A中创建一个接口B的实例,但是这样做的依赖太大了。

    2.而IOC的方法是只在类A中定义好用于关联接口B的实现的方法,将类A,接口B和接口B的实现放入IOC的容器中,通过一定的配置由容器来实现类A与接口B的实现类C的关联。

6.Bean元素解释

    Bean元素:使用该元素描述需要spring容器管理的对象

    Class属性:被管理对象的完整类名

    name属性:给被管理的对象起个名字,获得对象时根据该名称获得对象,可以重复,可以使用特殊字符

    id属性:与name属性一模一样。名称不可重复,不能使用特殊字符

    scope属性:singleton(默认值)    单例对象,被标识为单例的对象在spring容器中只会存在一个

                        prototype(多利原型)    被标识为多例对象,每次获得才会创建,每次创建都是新的对象

7.spring的aop编程

        1.动态代理(优先)

            被代理对象必须实现接口才能产生代理对象,如果没有接口将不能使用动态代理。

        动态代理实现:

             接口类:

                java面试(spring)_第1张图片

            实现类:

                java面试(spring)_第2张图片

            1.书写一个类实现InvocationHandler接口,实现invoke()方法

java面试(spring)_第3张图片

            2.通过proxy对象获得需要的代理对象

    java面试(spring)_第4张图片

            3.测试

java面试(spring)_第5张图片

        2.cglib代理(没有接口)

            第三方代理技术,cglib代理可以对任何类生成代理,代理的原理是对目标对象进行继承代理,如果目标对象被final修饰,则无法被cglib代理

8.spirng如何管理事务

    粗一点来讲,spring的事务管理分为编程式与声明式,所有事务管理都抽象为事务操作管理类(PlatformTransctionManager),事务状态(TransactionStatus)和定义了事务的传播行为和隔离级别的类(TransactionDefinition)这三个接口;

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3591016/blog/1362820

你可能感兴趣的:(java面试(spring))