- 什么是spring?spring是一个轻量级的Java开发框架,最早由Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,它是一个分层的JavaSE、JavaEE full stack(一站式)轻量级开源框架,为开发Java应用程序提供了全面的基础架构支持。spring负责基础架构,因此Java开发者可以专注于应用程序开发。Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。
- spring的两大特性?依赖注入(dependency injection ,DI)和面向切面编程(aspect-oriented program,AOP).
- spring框架的设计目标,设计理念的核心是什么?(1)spring设计目标:spring为开发者提供一个一站式轻量级应用开发平台;(2)spring的设计理念:在JavaEE开发中,支持POJO和JavaBean开发的方式,使应用面向接口开发,充分支持OO(面向对象)设计方法;spring通过IOC容器实现对象的耦合关系的管理,并实现依赖反转,将对象之间的依赖关系交给IOC容器,实现解耦。(3)spring框架的核心:Ioc容器和AOP模块,通过Ioc容器管理POJO对象以及他们之间的耦合关系;通过AOP以动态的非侵入的方式增强服务,Ioc让相互协作的组件保持松散的耦合,而AOP编程允许你把遍布于应用各层的功能分离出来形成可重用的功能组件。
- spring的优缺点是什么?(1)优点:方便解耦,简化开发,spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给spring管理;AOP编程的支持,spring提供面向对象的切面编程,可以方便的实现对程序进行权限的拦截,运行监控等功能;声明式事务的支持:只需要通过配置就可以完成对事务的管理,而无需手动编程。方便程序的测试:spring对Junit4支持,可以通过注解方便的测试spring程序;方便集成各种优秀的框架:spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的支持支持(struct、Hibernate、Mybatis等);降低JavaEE api的使用难度:spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等)都提供了封装,使这些API应用难度大大降低。(2)缺点:Spring的依赖反射,反射影响性能;使用门槛高,入门spring需要很长时间。
- spring由哪些模块组成?(1)spring core:提供了框架的基本组成部分,包括控制反转(Inversion of Control,Ioc)和依赖注入(Dependency Injection,DI)功能;(2)spring beans:提供了BeanFactory,是工厂模式的一个经典实现,spring将管理对象叫做bean;(3)spring context:构建与core封装包基础上的context封装包,提供了一个框架式的对象访问方法;(4)spring jdbc:提供了一个JDBC的抽象层,消除了繁琐的JDBC编码和数据厂商特有的代码解析,简化JDBC;(5)spring aop:提供了面向切面的编程实现,让你可以自定义拦截器、切点等。(6)spring web :提供了针对web开发的集成特性,例如文件上传,利用Servlet listeners进行ioc容器初始化针对web的ApplicationContext。(7)spring test:主要是为了测试提供支持的,支持使用Junit或者TestNG对spri通知被制动更新,组件进行单元测试和集成测试。
- spring框架中都使用了哪些设计模式?(1)工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例;(2)单例模式:Bean默认为单例模式;(3)代理模式:spring的AOP功能用到的JDK动态代理和CGLIb字节码生成技术;(4)模板方法:用来解决代码重复的问题,比如:JpaTemplate;(5)观察者模式:定义对象一种一对多的关系,当一个对象的状态发生了改变时,所有依赖于它的对象都会得到对象都会被动更新,如spring中的lister实现的appliactionListener;