目录
1.核心
Spring是分层的JavaSE/EE一站式轻量级开源框架,以IoC(Inverse of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心
1.1 IoC
IoC(Inverse of Control,控制反转)指的是将对象的创建交给Spring去创建。使用Spring之前,对象的创建都是new 创建,而使用Spring之后,对象的创建都交给Spring框架。
1.2 AOP
AOP(Aspect Oriented Programming,面向切面编程)用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP还能解决一些系统层面上的问题,比如日志、事务、权限等。
1.3 Bean
Spring中,认为一切Java类都是资源,而资源都是类的实例对象Bean,容纳并管理这些Bean的是Spring的IoC容器,所以Spring是一种基于Bean的编程。
2.Spring的优点和缺点
2.1 优点
- 方便解耦,简化开发:将所有对象的创建和依赖关系维护交给Spring管理。
- 方便集成各种优秀框架:Spring内部提供了对各种优秀框架(Struts2、Hibernate、MyBatis)的直接支持。
- 降低了Java EE API使用难度:对JAVA EE开发中一些API(JDBC、JavaMail、远程调用)都提供了封装。
- 方便程序测试:支持JUnit4,可以通过注解方便地测试Spring程序。
- AOP编程支持:面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。
- 声明式事务:通过配置就可以完成对事务的管理,无需编程。
2.2 缺点
- 学习曲线较陡:由于Spring Framework涵盖的领域广泛且功能强大,学习曲线可能较陡峭,尤其是对于新手来说。初学者可能需要一定的时间和精力来掌握Spring的核心概念、应用和工作原理。
- 配置复杂:对于一些复杂的应用程序,Spring的配置文件可能会变得冗长和复杂。特别是XML配置文件在大型项目中可能变得难以维护。尽管Spring也支持基于注解和Java配置的方式,但这些方式也需要适当的理解和使用。
- 运行时效率:与一些轻量级的框架相比,Spring Framework的运行时效率相对较低。这主要是因为Spring通过代理、注解解析和AOP等技术实现了许多功能,这些额外的运行时开销会对性能产生一定的影响。但是,在现代的硬件和优化技术下,这种性能损失通常是可以接受的。
- 学习过多的特性:Spring Framework提供了许多特性和模块,如Spring MVC、Spring Data、Spring Security等。对于初学者来说,学习和理解所有这些特性可能是一个挑战,并且可能不会在所有项目中都有用。因此,开发人员需要根据项目的需求和复杂性来选择适当的特性和模块。
- 过度使用和不合理的设计:有时候开发人员可能会过度使用Spring的某些功能,导致应用程序的复杂性和维护成本增加。此外,如果设计不当,过多的依赖注入和配置可能会使代码变得难以理解和调试。
3.什么是依赖注入
依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现。
简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取