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

猜你喜欢

64岁肖恩·潘现身机场,30岁高挑模特女友相伴,网友:男财女貌

Shelookswayyoungerthanheryearsandhelooksolderthanhis,whichdoesn&amp;39thelp.她看起来比实际年龄年轻得多,而他看起来比他的年龄大,这无济于事…

64岁肖恩·潘现身机场,30岁高挑模特女友相伴,网友:男财女貌

破解电力运维密码:HM9890变压器油色谱分析仪(电力运维app)

在变压器运行维护中,色谱分析技术扮演着关键角色。本文深入解读HM9890变压器油色谱分析仪的功能原理及其对电网稳定性的实际贡献,帮助读者掌握这一重要设备的核心特性。 文中还将剖析其工作原理,探讨其应用场景,并给出实用购买建议。

破解电力运维密码:HM9890变压器油色谱分析仪(电力运维app)

凡人修仙传》:2025年度浙江卫视收视年冠,这部仙侠剧藏着多少惊喜?(《凡人修仙传》2)

这份成绩的背后,是剧集在制作、叙事、角色塑造等多方面的精雕细琢,每一处细节都藏着打动观众的惊喜。 《凡人修仙传》在制作层面尽显诚意,将国漫级水准成功融入真人剧创作,为观众构建出极具沉浸感的修仙世界。它不仅为观…

《<strong>凡人修仙传</strong>》:2025年度浙江卫视收视年冠,这部仙侠剧藏着多少惊喜?(《<strong>凡人修仙传</strong>》2)

香蜜小说原作者称不知要改编短剧 此前剧版制作人称将重启故事(香蜜小说改编)

搜狐娱乐讯 近日网传 《香蜜沉沉烬如霜》要改编为短剧引热议。25日,小说原作者电线明确辟谣说自己完全不知道香蜜要被改成短剧。26日,香蜜『制片人』刘宁发布香蜜短剧版组讯,并称:“决定重启这个故事”。…

香蜜小说原作者称不知要改编短剧 此前剧版制作人称将重启故事(香蜜小说改编)

人人皆知李胜素,却无人识得梁以薇,嫁给于魁智35年她究竟图什么(人人皆知的上一句)

这份笃定,源于2002年她母亲病重时,于魁智连夜飞赴香港,日夜守护在病床前的深情厚意。这三个人的故事里,没有戏剧性的冲突,只有各自对选择的坚守:于魁智守护着京剧传承,梁以薇守护着家庭温暖,李胜素守护着艺术追求…

人人皆知李胜素,却无人识得梁以薇,嫁给于魁智35年她究竟图什么(人人皆知的上一句)