Spring Framework 是一个开源的轻量级 Java 开发框架,旨在简化企业级应用的开发。其核心思想是 控制反转(IoC) 和 面向切面编程(AOP),通过模块化设计提供一站式解决方案,涵盖数据访问、事务管理、Web 开发、安全等场景。
Spring Boot 是基于 Spring 的扩展框架,提供 约定优于配置 和 快速启动 的能力,大幅简化了 Spring 应用的搭建与部署。
模块 | 功能描述 |
---|---|
Core Container | IoC 容器,管理 Bean 的生命周期 |
Data Access | JDBC、ORM(如 Hibernate 整合) |
Web | Spring MVC、RESTful API 支持 |
AOP | 切面编程(日志、事务管理) |
Test | 单元测试与集成测试支持 |
// 通过 @Autowired 注解实现依赖注入
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
}
实例化 → 属性注入 → 初始化方法(@PostConstruct) → 使用 → 销毁方法(@PreDestroy)
通过 动态代理 实现横切关注点(如日志、事务)与业务逻辑的解耦。
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logMethodCall(JoinPoint joinPoint) {
System.out.println("方法调用: " + joinPoint.getSignature());
}
}
步骤:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userService.findById(id);
return ResponseEntity.ok(user);
}
}
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {}
Spring 默认提供 singleton
和 prototype
作用域,可扩展为 request
、session
等。
@Bean
@Scope("prototype")
public MyBean myBean() {
return new MyBean();
}
使用 @Transactional
注解实现事务控制。
@Service
public class OrderService {
@Transactional
public void placeOrder(Order order) {
// 数据库操作,异常时自动回滚
}
}
根据环境动态加载 Bean。
@Bean
@ConditionalOnProperty(name = "cache.enabled", havingValue = "true")
public CacheManager cacheManager() {
return new RedisCacheManager();
}
配置用户认证与权限控制:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and().formLogin();
}
}
场景 | 技术方案 |
---|---|
企业级 Web 应用 | Spring MVC + Thymeleaf |
微服务架构 | Spring Boot + Spring Cloud |
数据驱动应用 | Spring Data JPA + Hibernate |
高并发 API 服务 | Spring WebFlux(响应式编程) |
安全敏感系统 | Spring Security + OAuth2 |
客户端请求 → DispatcherServlet → 处理器映射(HandlerMapping)→ 控制器(Controller)→ 返回 ModelAndView → 视图解析器(ViewResolver)→ 渲染视图 → 响应客户端
Core Container(Beans, Core, Context, SpEL)
↑
Data Access/Integration(JDBC, ORM, Transactions)
↑
Web(MVC, WebSocket)
↑
AOP(AspectJ 集成)
Spring 框架通过 IoC 和 AOP 机制彻底改变了 Java 企业级开发模式,而 Spring Boot 进一步降低了开发门槛。无论是构建单体应用还是微服务系统,Spring 生态均提供了成熟的解决方案。建议结合具体场景选择模块:
通过深入理解 Bean 生命周期、依赖注入原理及常用注解(如 @Autowired
、@RestController
),开发者可以高效构建健壮的企业级应用。