Spring面试总结1!

1 、BeanFactory和ApplicationContext区别

BeanFactory基本的工厂
解析,管理,实例化所有容器内的bean的接口,spring中所有解析配置文件的类都直接或者间接实现该接口 
ApplicationContext接口implements BeanFactory
    BeanFactory 在解析配置文件时并不会初始化对象,只有在使用对象时(getBean())才会对该对象进行初始化
    ApplicationContext 在解析配置文件时对配置文件中的所有对象都初始化了,getBean()方法只是获取对象的过程
    ApplicationContext是对BeanFactory扩展,提供了更多功能 国际化处理 事件传递  Bean自动装配  各种不同应用层Context实现

2、依赖注入Bean的属性

                      对于类成员变量,注入方式有三种
                                •构造函数注入
                                •属性setter方法注入
                                •接口注入

3.使用注解定义Bean

除了@Component外,Spring提供了3个功能基本和@Component等效的注解
•@Repository用于对DAO实现类进行标注
•@Service用于对Service实现类进行标注
•@Controller用于对Controller实现类进行标注
这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强

4、aop术语
5、代理知识总结

    Spring在运行期,生成动态代理对象,不需要特殊的编译器
    Spring AOP的底层就是通过JDK动态代理或CGLib动态代理技术 为目标Bean执行横向织入
    1.若目标对象实现了若干接口,spring使用JDK的java.lang.reflect.Proxy类代理。
    2.若目标对象没有实现任何接口,spring使用CGLIB库生成目标对象的子类。
    程序中应优先对接口创建代理,便于程序解耦维护
    标记为final的方法,不能被代理,因为无法进行覆盖
    JDK动态代理,是针对接口生成子类,接口中方法不能使用final修饰
    CGLib 是针对目标类生产子类,因此类或方法 不能使final的
    Spring只支持方法连接点,不提供属性连接

6、Spring AOP增强类型

        前置通知 org.springframework.aop.MethodBeforeAdvice
        在目标方法执行前实施增强
        后置通知 org.springframework.aop.AfterReturningAdvice
        在目标方法执行后实施增强
        环绕通知 org.aopalliance.intercept.MethodInterceptor
        在目标方法执行前后实施增强
        异常抛出通知 org.springframework.aop.ThrowsAdvice
        在方法抛出异常后实施增强
        引介通知 org.springframework.aop.IntroductionInterceptor
        在目标类中添加一些新的方法和属性

7、Spring AOP切面类型

    Advisor : 代表一般切面,Advice本身就是一个切面,对目标类所有方法进行拦截
    PointcutAdvisor : 代表具有切点的切面,可以指定拦截目标类哪些方法
    IntroductionAdvisor : 代表引介切面,针对引介通知而使用切面

8、使用AspectJ实现AOP

    @AspectJ提供不同的通知类型
            @Before 前置通知,相当于BeforeAdvice
            @AfterReturning 后置通知,相当于AfterReturningAdvice
            @Around 环绕通知,相当于MethodInterceptor
            @AfterThrowing抛出通知,相当于ThrowAdvice
            @After 最终final通知,不管是否异常,该通知都会执行
            @DeclareParents 引介通知,相当于IntroductionInterceptor 

9、Spring 支持两种方式事务管理

        编程式的事务管理
                在实际应用中很少使用
                通过TransactionTemplate手动管理事务
        使用XML配置声明式事务
                开发中推荐使用(代码侵入性最小)
                Spring的声明式事务是通过AOP实现的

10、Spring有哪些优点

1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
2.可以提供众多服务,事务管理,WS等。
3.AOP的很好支持,方便面向切面编程。
4.对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等
5.Spring DI机制降低了业务对象替换的复杂性。
6.Spring属于低侵入,代码污染极低。
7.Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部

11、Spring的七大模块

☞ Spring 核心容器(Core):提供Spring框架的基本功能。

核心容器的主要组件是BeanFactory,是工厂模式的实现。
BeanFactory使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际的应用代码程序分开。
☞ Spring AOP:通过配置管理特性,Spring AOP模块直接面向方面的编程功能集成到了Spring框架中,
所以可以很容易的使Spring框架管理的任何对象支持 AOP。
通过使用Spring AOP,不用依赖于EJB组件,就可以将声明性事务管理集成到应用程序中。
☞ Spring ORM:Spring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括 JDO、Hibernate、iBatis和TopLink。
所有这些都遵从Spring的通用事务和DAO异常层结构。
☞ Spring DAO:JDBC DAO抽象层提供了有意义的异常层次的结构,可用该结构来管理异常处理和不同数据供应商抛出的异常错误信息。
异常层次结构简化了错误处理,并且大大的降低 了需要编写的异常代码数量(例如,打开和关系连接)。
Spring DAO的面向JDBC的异常遵从通用的DAO异常层结构。
☞ Spring WEB:Web上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供了上下文的服务。
所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。
☞ Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。
Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。
☞ Spring MVC:Spring的MVC框架是一个全功能的构建Web应用程序的MVC实现。
通过策略接口,MVC框架变成为高度可配置的,MVC容纳的大量视图技术,包括JSP、Velocity、Tiles、iText和Pol

你可能感兴趣的:(Spring面试总结1!)