Spring经典问题
1、什么是spring?
Spring 是一个开源框架,为简化企业级应用开发而生,目标是使得Java EE应用程序的开发更加简捷。
一般说的spring就是spring framework,多模块集合,通过这些模块协助我们开发。
这些模块为:核心容器、数据访问/集成、web、AOP(面向切面编程)、工具、消息和测试。
核心技术:依赖注入(DI)、AOP、事件(Events)、资源、i18n、验证、数据绑定、类型转换、SpEL。
数据访问:事务、DAO支持、JDBC、ORM、编组XML。
集成:远程处理、JMS、JCA、JMX、电子邮件、任务、调度、缓存。
WEB:springmvc、spring WebFlux Web框架。
测试:模拟对象、TestContext框架、springmvc测试,WebTestClient。
语言:Kotlin、Groovy、动态语言。
Spring Core:基础,可以说Spring其他所有的功能都依赖于该类库。主要提供IOC和DI功能。
Spring Aspects:该模块为与AspectJ的集成提供支持。
Spring AOP:提供面向方面的编程实现。
Spring JDBC:Java数据库连接。
Spring JMS:Java消息服务。
Spring ORM:用于支持Hibernate等ORM工具。
Spring Web:为创建Web应用程序提供支持。
Spring Test:提供了对JUnit和TestNG测试的支持。
2、IOC和AOP
2.1、IOC
IOC(Inversion Of Controll,控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由给Spring框架来管理。IOC在其他语言中也有应用,并非Spring特有。IOC容器是Spring用来实现IOC的载体,IOC容器实际上就是一个Map(ke