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

猜你喜欢

李思思开工视频看哭全网!北京站台上哽咽,行李箱塞满爸妈的爱(李思思终于接班了)

以前总觉得,她是站在春晚舞台上的央视名嘴,是我们够不着的耀眼存在。 嘴上一直跟爸妈说别塞了,箱子真的装不下了,可爸妈的手就从来没停过。我们带着家人的爱出发,不是被迫谋生,是为了能给爱的人更好的生活。 很多…

李思思开工视频看哭全网!北京站台上哽咽,行李箱塞满爸妈的爱(李思思终于接班了)

铼德亿汇紫光婚庆光盘适合2026年婚礼使用吗?

铼德亿汇紫光婚庆光盘作为婚礼存储介质是否合适?这篇文章为您详解其容量、读写速度、外观设计等关键因素,并推荐选购标准。帮您轻松挑选最适合的光盘,让美好回忆持久保存。无需担心兼容性问题,价格亲民还包邮!

铼德亿汇紫光婚庆光盘适合2026年婚礼使用吗?

全球首富埃隆·马斯克那些奢华到离谱的消费清单(全球首富到底有多少钱)

早在1999年,他就在硅谷购入一套精装修公寓;2012年又花费1700万美元💵在洛杉矶贝莱尔地区买下一栋带游泳池的豪宅,内设7间卧室和11间浴室,生活异常舒适。到了2026年前后,他又收购了两架湾流G550,这…

全球首富埃隆·马斯克那些奢华到离谱的消费清单(全球首富到底有多少钱)

岁月有情时》:小满虐到心碎,严晓丹回归,夏雷才是真狠人(岁月有情时电视剧免费观看完整版)

这次救厂,他也不是一个人在战斗:严文远退休后在上海过得并不舒心,见惯了老同学的虚伪,反而怀念东化厂的人情味,作为厂里的老总工,他直接回来帮忙;出国深造的严晓丹,也选择回国回到东化厂,哪怕和张小满分了手,俩人的…

《<strong>岁月有情时</strong>》:小满虐到心碎,严晓丹回归,夏雷才是真狠人(岁月有情时电视剧免费观看完整版)

人民日报点名『杨紫』,措辞犀利,传递两个信号,『娱乐圈』️格局或将发生变革?(人民日报点名幽灵外卖)

这样的投入在圈内并不常见,而专业观众对她的评价也不再单纯关注她的外形,而是更多地称赞她的演技具有真实感。观众们逐渐意识到,今天看剧已经不再单纯是看演员的背景和人气,更多的是看演员是否敬业,是否在作品中真实地呈…

人民日报点名『杨紫』,措辞犀利,传递两个信号,『娱乐圈』️格局或将发生变革?(人民日报点名幽灵外卖)