当前位置: 首页 > news >正文

Spring 01

今天是2025/0420 19:44 day 21

总路线请移步主页Java大纲相关文章

今天进行Spring 1,2,3 个模块的归纳

最近在忙毕设,更新有点慢,见谅

首先是Spring 的相关内容概括的思维导图

一、核心概念详解

1. IoC容器

1.1 工作原理
// 典型使用示例
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserService userService = context.getBean(UserService.class);
1.2 依赖注入方式对比
方式优点缺点
构造器注入不可变对象,强依赖参数多时代码臃肿
Setter注入灵活性高对象可能处于部分初始化状态
字段注入代码简洁难以测试,隐藏依赖关系
1.3 注解驱动开发
@Configuration
public class AppConfig {@Bean public DataSource dataSource() {return new DriverManagerDataSource(...);}
}

2. AOP编程

2.1 核心概念图解
[业务组件] --交叉关注点--> [日志/事务/安全]\                  /\                /[AOP代理层]
2.2 通知类型示例
@Aspect
public class LogAspect {@Before("execution(* com.example.service.*.*(..))")public void logBefore(JoinPoint jp) {System.out.println("方法调用前: " + jp.getSignature());}@Around("@annotation(com.example.Monitor)")public Object monitorPerformance(ProceedingJoinPoint pjp) throws Throwable {long start = System.currentTimeMillis();Object result = pjp.proceed();System.out.println("方法执行耗时: " + (System.currentTimeMillis()-start));return result;}
}

二、Spring容器深度解析

1. Bean生命周期全流程

1. 实例化 → 2. 属性填充 → 3. BeanNameAware → 4. BeanFactoryAware↓
5. PreInitialization(BeanPostProcessor) → 6. @PostConstruct↓
7. InitializingBean → 8. 自定义init-method → 9. PostInitialization

2. 作用域对比实验

@Scope("prototype")
@Bean
public PrototypeBean pb() { return new PrototypeBean(); }
​
// 测试代码:
PrototypeBean b1 = context.getBean(PrototypeBean.class);
PrototypeBean b2 = context.getBean(PrototypeBean.class);
System.out.println(b1 == b2);  // 输出false

3. 条件化配置

@Conditional(ProdEnvCondition.class)
@Bean
public DataSource prodDataSource() {return new ProductionDataSource();
}
​
public class ProdEnvCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {return "prod".equals(context.getEnvironment().getProperty("env"));}
}

三、Spring MVC全流程剖析

1. 请求处理时序图

HTTP Request → DispatcherServlet → HandlerMapping → Controller → 
ModelAndView → ViewResolver → View → HTTP Response

2. 控制器开发模式

2.1 传统控制器
@Controller
@RequestMapping("/users")
public class UserController {@GetMapping("/{id}")public String getUser(@PathVariable Long id, Model model) {model.addAttribute("user", userService.findById(id));return "userDetail";}
}
2.2 RESTful风格
@RestController
@RequestMapping("/api/users")
public class UserApiController {
​@PostMappingpublic ResponseEntity<User> createUser(@RequestBody @Valid User user) {User saved = userService.save(user);URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(saved.getId()).toUri();return ResponseEntity.created(location).body(saved);}
}

3. 异常处理机制

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(DataNotFoundException.class)@ResponseStatus(HttpStatus.NOT_FOUND)public ErrorResponse handleNotFound(DataNotFoundException ex) {return new ErrorResponse("NOT_FOUND", ex.getMessage());}@ExceptionHandler(MethodArgumentNotValidException.class)public ResponseEntity<Map<String, String>> handleValidationExceptions(MethodArgumentNotValidException ex) {Map<String, String> errors = new HashMap<>();ex.getBindingResult().getAllErrors().forEach(error -> {String fieldName = ((FieldError) error).getField();errors.put(fieldName, error.getDefaultMessage());});return ResponseEntity.badRequest().body(errors);}
}

相关文章:

  • 9、Hooks:现代魔法咒语集——React 19 核心Hooks
  • 数字系统与编码
  • 计算机组成原理笔记(十六)——4.1基本算术运算的实现
  • Java Streams 使用教程
  • 即梦AI与可灵AI视频生成功能对比分分析
  • AI与思维模型【70】——遗忘曲线
  • 从外网访问局域网服务器的方法+Linux文件和命令
  • App-Controller - 通过自然语言操控应用程序的智能框架
  • tigase源码学习杂记-组件化设计
  • 人工智能之矢量搜索报告
  • 如何轻松实现用户充值系统的API自动化测试
  • 【实战中提升自己】内网安全部署之端口隔离与MAC地址认证
  • Dify部署内网时遇到的代理问题及解决办法
  • 【C语言】char unsigned char signed char
  • python 字符串解析 struct.unpack_from(fmt, buffer, offset=0) ‘<? B I‘
  • 从零开始详细讲解 Boost.Asio
  • ZYNQ笔记(十):XADC (PS XDAC 接口)
  • 火箭姿态控制系统
  • HTML 如何改变字体颜色?深入解析与实践指南
  • 【题解-Acwing】790. 数的三次方根
  • 国开行原副行长李吉平一审获刑14年
  • 同济研究生开发AI二维码拿下大奖,新一代00后开发者掀起AI创业潮
  • 徐之凯评《突如其来的勇气》|早熟的抵抗
  • 经济日报金观平:拥抱中国就是拥抱确定性
  • “这是本届政府的态度”,英国明确拒绝与中国脱钩
  • “中国电三之都”江苏丰县成功举办第十五届电动车展览会