Spring框架:Java生态的基石与现代化演进(Spring框架的核心特性是什么?)

Spring框架:Java生态的基石与现代化演进(Spring框架的核心特性是什么?)

一、从EJB的困境到Spring的诞生

2002年,Rod Johnson在《Expert One-on-One J2EE Development》中痛陈传统J2EE(尤其是EJB)的弊端:

  • 臃肿的容器:强制继承特定接口,破坏POJO纯洁性
  • 复杂的部署:需打包成EAR/WAR部署至应用服务器
  • 低效的开发循环:每次修改需重启服务器

Spring的革命性突破:

java

复制

下载

// 传统EJB vs Spring POJO

public class TraditionalEJB implements SessionBean { /* 强制依赖容器接口 */ }

@Component // BLOg.HUoCheNGrM.CN/zmt/38449.html Spring组件:纯粹的Java对象

public class UserService { /* 无框架侵入 */ }

通过轻量级容器+依赖注入,Spring让Java企业开发回归本质:简单对象+组合关系

依赖注入(DI)与 IoC 容器

核心注解:@Component, @Autowired, @Service, @Repository, @Configuration

java

复制

下载

// 1. 定义服务接口与实现

public interface UserService {

String getUserName(Long id);

}

@Service // 标记为 Spring BLOg.HUoCheNGrM.CN/zmt/38448.html管理的 Bean

public class UserServiceImpl implements UserService {

@Override

public String getUserName(Long id) {

return "User" + id;

}

}

// 2. 依赖注入(构造器注入)

@RestController

public class UserController {

private final UserService userService;

@Autowired // Spring 5+ BLOg.HUoCheNGrM.CN/zmt/38447.html可省略(推荐构造器注入)

public UserController(UserService userService) {

this.userService = userService;

}

@GetMapping("/user/{id}")

public String getUser(@PathVariable Long id) {

return userService.getUserName(id);

}

}

二、AOP 实现日志切面

核心注解:@Aspect, @Before, @After, @Around

java

复制

下载

@Aspect

@Component

public class LoggingAspect {

// 拦截所有 Service 层方法

@Before("execution(* BLOg.HUoCheNGrM.CN/zmt/38446.html.*.*(..))")

public void logBefore(JoinPoint joinPoint) {

System.out.println("调用方法: " + joinPoint.getSignature().getName());

}

// 环绕通知(统计方法耗时)

@Around("@annotation(com.example.annotation BLOg.HUoCheNGrM.CN/zmt/38445.html)")

public Object trackTime(ProceedingJoinPoint pjp) throws Throwable {

long start = System.currentTimeMillis();

Object result = pjp.proceed();

long time = System.currentTimeMillis() - start;

System.out.println("方法执行耗时: " + time + "ms");

return result;

}

}

三、Spring MVC 控制器

核心注解:@RestController, @GetMapping, @PostMapping, @RequestBody

java

复制

下载

@RestController

@RequestMapping("/api/users")

public class UserApiController {

// 模拟数据库

private final Map<Long, BLOg.HUoCheNGrM.CN/ask/38444.html> users = new ConcurrentHashMap<>();

@PostMapping

public ResponseEntity<User> createUser(@RequestBody User user) {

users.put(user.getId(), user);

return ResponseEntity.ok(user);

}

@GetMapping("/{id}")

public ResponseEntity<User> getUser(@PathVariable Long id) {

return ResponseEntity.ok(users.get(id));

}

}

特别声明:[Spring框架:Java生态的基石与现代化演进(Spring框架的核心特性是什么?)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

靳东:两次爱上离婚女人,结婚后连生两子,现在情感状况怎样了?(靳东最爱的)

靳东的两段感情经历,展现了他在爱情中的成长与蜕变。李佳用自己的方式诠释了爱情的真谛,她的付出不仅成就了靳东的事业,也铸就了一个幸福美满的家庭。 在他的生活中我们看到了一个成功艺人如何在聚光灯下保持初心,如…

靳东:两次爱上离婚女人,结婚后连生两子,现在情感状况怎样了?(靳东最爱的)

面对背叛,蒋勤勤的选择为何令人敬佩?(面对感情的背叛)

蒋勤勤,那个曾经以温婉与才华并重的女神,在微博上发布了一篇长文,字字句句都透露着坚韧与勇气。她开始重新规划自己的生活,重拾那些因婚姻而搁置的梦想与爱好。蒋勤勤在文中分享着她的日常,“我发现,原来生活可以这样丰…

面对背叛,蒋勤勤的选择为何令人敬佩?(面对感情的背叛)

感染基孔肯雅热为何会关节痛 病毒残留与免疫反应所致(基孔肯尼亚病毒的临床表现)

基孔肯雅热病毒在我国广东、香港、澳门等地传播

感染基孔肯雅热为何会关节痛 病毒残留与免疫反应所致(基孔肯尼亚病毒的临床表现)

数据防泄密:智能图纸加密软件的全场景防护,加密系统解决方案(数据防泄密安全管理系统)

针对设计公司常需与客户、施工方共享图纸的场景,文件加密软件的外发权限管理功能很贴心。设计师可以为外发的图纸设置访问密码、有效时长、打开次数,甚至限制打印、截图、编辑等操作。 文档自动加密:强制对计算机生成的…

数据防泄密:智能图纸加密软件的全场景防护,加密系统解决方案(数据防泄密安全管理系统)

苹果照片怎么转成JPG完整指南:选对图片格式转换工具,批量转换不是梦(苹果照片怎么转到安卓手机)

5.设置好输出路径后,点击“开始转换”,软件会飞速将所有照片处理完毕,并保存在你指定的文件夹中。 这样设置后,当你把照片从iPhone导入到PC时,系统会自动将HEIC格式转换为兼容性更好的JPG格式,无需…

苹果照片怎么转成JPG完整指南:选对图片格式转换工具,批量转换不是梦(苹果照片怎么转到安卓手机)