1.请解释一下,Spring 框架有哪些自动装配模式,它们之间有何区别?

no :这是 Spring 框架的默认设置,在该设置下自动装配是关闭的,开发者需要自行在 bean 定义中用标签明确的设置依赖关系 。

byName :该选项可以根据 bean 名称设置依赖关系 。 当向一个 bean 中自动装配一个属性时,容器将根据 bean 的名称自动在在配置文件中查询一个匹配的 bean。 如果找到的话,就装配这个属性,如果没找到的话就报错 。

byType :该选项可以根据 bean 类型设置依赖关系 。 当向一个 bean 中自动装配一个属性时,容器将根据 bean 的类型自动在在配置文件中查询一个匹配的 bean。 如果找到的话,就装配这个属性,如果没找到的话就报错 。

constructor :构造器的自动装配和 byType 模式类似,但是仅仅适用于与有构造器相同参数的 bean ,如果在容器中没有找到与构造器参数类型一致的 bean ,那么将会抛出异常 。

autodetect :该模式自动探测使用构造器自动装配或者 byType 自动装配 。 首先,首先会尝试找合适的带参数的构造器,如果找到的话就是用构造器自动装配,如果在 bean 内部没有找到相应的构造器或者是无参构造器,容器就会自动选择 byTpe 的自动装配方式 。

2.Spring 框架中用到了哪些设计模式?请举例说明

Spring 框架中使用到了大量的设计模式,下面列举了比较有代表性的:

代理模式 — 在 AOP 和 remoting 中被用的比较多 。

单例模式 — 在 spring 配置文件中定义的 bean 默认为单例模式 。

模板方法 — 用来解决代码重复的问题 。 比如 RestTemplate,   JmsTemplate,   JpaTemplate。

前端控制器 —Spring 提供了 DispatcherServlet 来对请求进行分发 。

视图帮助 (View Helper   )—Spring 提供了一系列的 JSP 标签,高效宏来辅助将分散的代码整合在视图里 。

依赖注入 — 贯穿于 BeanFactory   /   ApplicationContext 接口的核心理念 。

工厂模式 —BeanFactory 用来创建对象的实例 。

3. 说说 Springmvc 有哪些优点?

它是基于组件技术的 . 全部的应用对象 , 无论控制器和视图 , 还是业务对象之类的都是 java 组件 ;并且和 Spring 提供的其他基础结构紧密集成 。

不依赖于 Servlet API( 目标虽是如此 , 但是在实现时确实是依赖于 Servlet 的 );

可以任意使用各种视图技术 , 而不仅仅局限于 JSP;

支持各种请求资源的映射策略;

它应是易于扩展的;

4.Spring 框架的事务管理有哪些优点?

它为不同的事务 API 如 JTA , JDBC , Hibernate , JPA 和 JDO ,提供一个不变的编程模式 。

它为编程式事务管理提供了一套简单的 API 而不是一些复杂的事务 API。

它支持声明式事务管理 。

它和 Spring 各种数据访问抽象层很好的集成 。

5.AOP 的应用场景、原理 、AOP 好处?

AOP–Aspect Oriented Programming 面向切面编程;用来封装横切关注点,具体可以在下面的场景中使用:

Authentication 权限

Caching 缓存

Context passing 内容传递

Error handling 错误处理

Lazy loading 懒加载

Debugging 调试

logging, tracing, profiling and monitoring 记录跟踪优化校准

Performance optimization  性能优化

Persistence 持久化

Resource pooling  资源池

Synchronization  同步

Transactions 事务

原理: AOP 是面向切面编程,是通过动态代理的方式为程序添加统一功能,集中解决一些公共问题 。

优点: 

* 各个步骤之间的良好隔离性耦合性大大降低 。 

* 源代码无关性,再扩展功能的同时不对源码进行修改操作。

6.Spring 中常见的创建对象的注解有哪些?

@Component

@Controller

@Service

@Repository