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

猜你喜欢

爱三迪取得耗材盘发条回转轴专利,有效防止耗材的松弛和缠绕(爱三迪科技)

国家知识产权局信息显示,芜湖市爱三迪电子科技有限公司取得一项名为“一种耗材盘发条回转轴”的专利,授权公告号CN223737436U,申请日期为2024年12月。企业注册资本500万人民币。 声明:市场有风险,…

爱三迪取得耗材盘发条回转轴专利,有效防止耗材的松弛和缠绕(爱三迪科技)

『那英』『华晨宇』直播互怼喊危言耸听!『何炅』救场被逼到耳红(『那英』和『华晨宇』互唱对方的歌)

随着争论的深入,观众们逐渐意识到,这场辩论不仅仅是两位音乐人观点的碰撞,更代表了当代音乐创作中感性与理性之间的对立。随着讨论的深入,观众们也开始认识到,音乐作为一种艺术形式,本身就建立在情感的基础上,而每个人…

『那英』『华晨宇』直播互怼喊危言耸听!『何炅』救场被逼到耳红(『那英』和『华晨宇』互唱对方的歌)

颈纹 “暴露年龄”!EMZ 医用修护膜 55%+ 平整度提升,轻松拥有天鹅颈

颈纹的形成源于胶原流失、日常姿势不当和护理缺失,想改善却发现市场产品乱象丛生:有的颈霜质地厚重,吸收慢还搓泥;有的仅能『补水』,对深层颈纹无效;有的成分刺激,颈部『敏感肌』用了泛红刺痛。综合实测,EMZ 医用修护护…

颈纹 “暴露年龄”!EMZ 医用修护膜 55%+ 平整度提升,轻松拥有天鹅颈

官媒发文!宗馥莉再破天花板,亲叔宗泽后和整个商界彻底傻眼了(宗祏是什么意思)

在杜建英正式起诉宗馥莉之前,外界对她的了解仅限于她是宗庆后的唯一女儿,宗庆后希望她继承自己的事业也理所当然。但宗泽后并不认可她的能力,认为她可能会把集团推向危险的境地,并且开始拉拢集团内部的高层,形成与…

官媒发文!宗馥莉再破天花板,亲叔宗泽后和整个商界彻底傻眼了(宗祏是什么意思)

罚罪2》:万万没想到,这才是丁小帅黑化的原因!(罚罪2更新日历)

那个总是被当作软柿子的丁小帅,居然主动踩下油门,带着贺彪直接撞了过去——这可不是被逼迫的,而是他亲手做的决定。 这一句话让赶来探望的文波都愣住了。真正激起他内心那团火的,其实早在几年前就悄然埋下:那天文波考上…

《<strong>罚罪2</strong>》:万万没想到,这才是丁小帅黑化的原因!(罚罪2更新日历)