Spring Framework 是一个功能强大且广泛使用的Java应用程序框架,提供了全面的基础设施支持,以简化企业级应用程序开发。它主要包括以下两大核心功能:
1. 依赖注入 (Dependency Injection)
- Spring的核心是控制反转(IoC)容器,它通过依赖注入减少了代码的耦合度,使得组件更易于测试和维护。
核心概念
- Bean: Spring中的Bean是指由Spring IoC容器管理的对象。
- 容器: IoC容器负责管理Bean的创建、配置和生命周期。Spring提供了多种容器实现,最常用的是
ApplicationContext
。 - 配置:
- XML配置: 传统的配置方式,在XML文件中定义Bean。
- 注解配置: 使用注解如
@Component
、@Autowired
等。 - Java配置: 使用
@Configuration
和@Bean
注解在Java类中定义配置。
示例
XML配置示例
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myBean" class="com.example.MyBean">
<property name="propertyName" value="propertyValue"/>
</bean>
</beans>
//注解配置示例:
@Component
public class MyBean {
@Autowired
private Dependency dependency;
}
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
注解配置和xml配置二选一,后续会更建议使用注解配置。
2. 面向切面编程 (Aspect-Oriented Programming, AOP)
- AOP允许你定义横切关注点(如事务管理、日志记录、权限验证等),并将它们与业务逻辑分离,从而提高代码的模块化程度。
核心概念
- Aspect: 切面,是横切关注点的模块化表示。
- Join Point: 连接点,是程序执行过程中能够插入切面的一个点,比如方法调用或异常抛出。
- Advice: 通知,是切面在特定的连接点所执行的操作。主要类型有前置通知、后置通知、环绕通知、异常通知等。
- Pointcut: 切点,定义了切面将要应用到哪些连接点上。
- Weaving: 织入,是将切面应用到目标对象从而创建代理对象的过程。
示例
注解配置示例:
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Logging before method: " + joinPoint.getSignature().getName());
}
@AfterReturning("execution(* com.example.service.*.*(..))")
public void logAfterReturning(JoinPoint joinPoint) {
System.out.println("Logging after method: " + joinPoint.getSignature().getName());
}
}
配置类
@Configuration
@EnableAspectJAutoProxy
public class AppConfig {
// Bean definitions
}
核心组件
- Spring Core:核心容器,包括BeanFactory、ApplicationContext等。
- Spring AOP:用于实现面向切面编程。
- Spring ORM:集成了各种ORM框架,如Hibernate、JPA等。
- Spring DAO:简化了数据库访问,避免了冗长的JDBC代码。
- Spring Context:提供上下文信息,继承自Core和Beans模块。
- Spring Web:为创建Web应用提供了基础支持。
- Spring MVC:实现了Model-View-Controller设计模式,用于构建Web应用。