1. Spring框架的历史由来
Spring框架最早由Rod Johnson在2002年提出,他在书《Expert One-on-One J2EE Design and Development》中详细描述了该框架的基本概念。Spring的出现是为了解决企业级应用开发中的复杂性,特别是当时Java EE(J2EE)应用程序开发中的大量样板代码和复杂的配置。通过引入控制反转(IoC)和面向切面编程(AOP),Spring框架简化了对象管理和业务逻辑分离,大大提升了开发效率和代码的可维护性。2004年,Spring 1.0正式发布,随后迅速成为Java开发领域的主流框架。
2.Spring框架的两大核心
1. Spring IOC
(1) IOC和依赖注入
控制反转(Inversion of Control, IoC)是Spring框架的核心理念之一。IoC的主要思想是将对象的创建和管理交给Spring容器,而不是在应用程序中手动创建和管理对象。依赖注入(Dependency Injection, DI)是实现IoC的一种方式,通过注入对象的依赖关系,Spring容器管理对象的生命周期和依赖关系,使代码更加模块化和易于测试。
(2) 使用Spring IOC 实现 JavaBean 注入
Spring IOC通过配置文件(如XML文件)或注解的方式实现JavaBean的注入。在XML配置文件中,可以通过<bean>
标签定义Bean,并通过<property>
标签注入依赖。例如:
<bean id="userDao" class="cn.ktjy.dao.impl.UserDaoImpl"></bean>
<bean id="userService" class="cn.ktjy.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
在注解方式中,可以使用@Component
、@Autowired
等注解来定义和注入Bean。
@Component("userDao")
public class UserDaoImpl implements UserDao {
}
@Service("userService")
public class UserServiceImpl {
@Autowired
private UserDao userDao;
}
2. Spring AOP
(1) 什么是AOP
面向切面编程(Aspect-Oriented Programming, AOP)是Spring框架的另一核心理念。AOP通过将横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来,实现了关注点分离(Separation of Concerns)。这不仅简化了业务逻辑代码,还提高了代码的可维护性和可重用性。
在Spring AOP中,可以通过配置文件或注解的方式定义切面和切点,并使用增强(Advice)来指定在方法执行的不同阶段(如前置、后置等)插入的逻辑。
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* cn.printer.Printer.print(..))"/>
<aop:aspect ref="theLogger">
<aop:before method="before" pointcut-ref="pointcut"/>
<aop:after-returning method="afterReturning" pointcut-ref="pointcut" returning="result"/>
</aop:aspect>
</aop:config>
Spring AOP将日志记录、性能监控等横切关注点从业务逻辑中分离出来,极大简化了代码结构,使代码更加清晰易懂