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

猜你喜欢

『杨超越』玩梗我的身材很曼妙 颜值身材双顶级美成内娱天花板(『杨超越』 梗)

相关话题#『杨超越』我的身材很曼妙梗#在短短一天内阅读量突破9亿,单条视频播放量更是超过了4亿,网友纷纷感叹:老天赏饭吃,颜值和身材都堪称内娱顶级配置。她的每一个动作,都透露出少女的灵动气息,这种原生态的曼妙也让…

『杨超越』玩梗我的身材很曼妙 颜值身材双顶级美成内娱天花板(『杨超越』 梗)

甜妹变身性感火辣女神!冯提莫早年大胆拍摄《男人装》性感封面(双顶径8.6胎儿有多重)

还记得那个在『直播间』唱着甜歌的冯提莫吗?当她早年登上《男人装》封面的照片曝光时,全网都惊掉了下巴——这还是我们认识的那个软萌小甜妹吗?当别人还在争论“凭什么能上男人装”,她早已用实力证明:性感不是讨好,而是掌控…

甜妹变身性感火辣女神!冯提莫早年大胆拍摄《<strong>男人装</strong>》性感封面(双顶径8.6胎儿有多重)

『赵今麦』也太大胆了吧!一袭露背裙体态吸睛,出名后更放得开(『赵今麦』0)

尤其是露背的设计,更是让整个『穿搭』增添了几分轻盈的感觉。亮片的设计无疑让你成为全场焦点,而裙子👗独特的剪裁和材质,也让整体造型充满了视觉冲击力。 无论是红毯造型,还是日常『穿搭』,『赵今麦』总是能够轻松驾驭,展现出她…

『赵今麦』也太大胆了吧!一袭露背裙体态吸睛,出名后更放得开(『赵今麦』0)

「亞視忠臣」順德開3間麵店,被前妻分身家剩40蚊曾抑鬱欲輕生

」一向在圈中人緣甚廣的劉錫賢,更獲潘志文、雪梨等專程由香港到順德捧場,片中所見,劉錫賢在店內親力親為,又大方同粉絲合照及簽名,相當親民,而麵店亦走親民路線,一碗鮮蝦雲吞麵僅售9.9元人民幣,價錢相宜。劉錫賢又…

「亞視忠臣」順德開3間麵店,被前妻分身家剩40蚊曾抑鬱欲輕生

为什么有的人大便不臭 有的人却很刺鼻 饮食和肠道都在“说话”(为什么有的人大姨妈三天有的人7天)

  大便的气味是人体消化系统健康状况的“隐形信号”,正常情况下会带有一定异味,但若气味异常浓烈刺鼻,可能提示饮食结构失衡或身体存在潜在问题。大便的气味是由什么决定的?了解大便异味的常见原因,有助于及时调整生活方式,维护消化系统健康。下面将从

为什么有的人大便不臭 有的人却很刺鼻 饮食和肠道都在“说话”(为什么有的人大姨妈三天有的人7天)