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框架的核心特性是什么?)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

『万茜』获金爵影后,七次拒潜规则是真?23年都干了啥(『万茜』获奖电影)

》这部话剧,从2013年演到2018年,她几乎每场都在,并且一人分饰七个角色,台词背得滚瓜烂熟,走位也完全依赖自己的记忆,没有借助提词器。并不是没有中国演员在努力,而是国际评委的标准发生了变化,他们不再看像不…

『万茜』获金爵影后,七次拒潜规则是真?23年都干了啥(『万茜』获奖电影)

大疆运动相机📷️卖爆了!线上份额首次超7成,海外趋势更猛(大疆运动相机📷️哪款好)

门内开花门外香,大疆运动相机📷️不止在国内卖得好,在海外市场同样很有竞争力,就连运动相机📷️鼻祖GoPro都甘拜下风。 就在刚刚,我还专门去京东搜了一下运动相机📷️的排行榜,结果根据实时销量排序的“热卖榜”被大疆包圆了…

大疆运动相机📷️卖爆了!线上份额首次超7成,海外趋势更猛(大疆运动相机📷️哪款好)

乳腺炎可以通过b超查出来吗(乳腺炎能疏通乳腺吗)

乳腺炎可以通过B超检查发现,这种检查能够显示乳腺组织的炎症性改变,如局部增厚、水肿、脓肿形成等。治疗乳腺炎的方法包括抗生素治疗、局部热敷和排空乳汁,具体方法需根据病情严重程度和医生建议进行

乳腺炎可以通过b超查出来吗(乳腺炎能疏通乳腺吗)

从素人到春晚主持!『于适』凭什么成顶流?背后故事太励志

网友们注意到,这位顶流『明星』️并没有助理随行,自己提着西装外套🧥四处奔波,休息时还在角落里默默背诵台词。或许,这就是『于适』能成为顶流的原因之一:他让每一个平凡的人都看到,只要你肯咬牙坚持,再艰难的环境里,也能绽放属于…

从素人到春晚主持!『于适』凭什么成顶流?背后故事太励志

小白必看|超模机选购避坑指南,别再交智商税!(超模集锦)

这种流畅感至关重要,它能确保你的力量完全用在目标肌肉的收缩与伸展上,而非消耗在克服器械自身的阻力上。 总结来说,选购一台称心如意的综合训练器械,需要像完成一次知名的训练一样,做好充分准备:明确目标(自身需求)…

小白必看|超模机选购避坑指南,别再交智商税!(超模集锦)