【后端】javaweb后端开发全流程梳理
Spring的IOC(控制反转)和DI(依赖注入)是整个框架的根基。
·
一、项目搭建:IOC与DI的基石作用
技术核心:Spring的IOC(控制反转)和DI(依赖注入)是整个框架的根基。
实现方式:
- XML配置或注解:通过
applicationContext.xml
定义Bean(如数据源),或用@Component
、@Service
等注解自动扫描类 - 依赖注入:在Service层用
@Autowired
注入DAO层对象,无需手动new对象
<!-- XML配置数据源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/mall"/>
</bean>
// Service层通过DI获取DAO
@Service
public class OrderService {
@Autowired // DI自动注入
private OrderDao orderDao;
}
二、请求处理:AOP与拦截器的协作
技术组合:
- 拦截器(Interceptor):处理权限校验、日志记录
- 过滤器(Filter):处理字符编码、XSS攻击防护
- AOP(面向切面):统一处理日志、事务、性能监控
示例:订单支付接口的权限校验
// 拦截器校验JWT
public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String token = request.getHeader("Authorization");
if (!JwtUtil.verify(token)) { // JWT校验
throw new UnauthorizedException("Token无效");
}
return true;
}
}
// AOP记录接口耗时
@Aspect
@Component
public class LogAspect {
@Around("execution(* com.mall.controller.*.*(..))")
public Object logTime(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
Object result = joinPoint.proceed();
System.out.println("接口耗时:" + (System.currentTimeMillis() - start));
return result;
}
}
三、数据安全:JWT与阿里云OSS整合
技术点:
- JWT(JSON Web Token):无状态身份认证,解决Session共享问题
- 阿里云OSS:存储用户上传的图片/视频
订单支付流程整合:
// Controller层处理支付
@PostMapping("/pay")
public Result payOrder(@RequestBody OrderDTO orderDTO, @RequestHeader String token) {
Long userId = JwtUtil.getUserId(token); // 解析JWT获取用户ID
orderService.createOrder(userId, orderDTO);
return Result.success("支付成功");
}
// OSS上传商品图片
public String uploadImage(MultipartFile file) {
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, "product/" + file.getOriginalFilename(), file.getInputStream());
return "https://oss.mall.com/product/" + file.getOriginalFilename();
}
四、业务核心:事务管理与全局异常
关键技术:
- 声明式事务:通过
@Transactional
保证订单与库存操作的原子性 - 全局异常处理:统一捕获
SQLException
、UnauthorizedException
等异常
订单创建服务示例:
@Service
public class OrderService {
@Autowired
private InventoryDao inventoryDao;
@Transactional(rollbackFor = Exception.class) // 事务管理
public void createOrder(Long userId, OrderDTO orderDTO) {
// 扣减库存
inventoryDao.reduceStock(orderDTO.getProductId(), orderDTO.getQuantity());
// 创建订单
orderDao.insert(new Order(userId, orderDTO));
// 模拟异常(测试事务回滚)
if (orderDTO.getAmount() < 0) {
throw new BusinessException("金额异常"); // 触发全局异常处理
}
}
}
// 全局异常处理器
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(BusinessException.class)
public Result handleBusinessException(BusinessException e) {
return Result.error(500, e.getMessage());
}
}
五、部署优化:OSS加速与监控
扩展技术:
- OSS+CDN加速:商品图片通过CDN分发
- Prometheus监控:监控接口QPS、数据库连接池状态
配置示例:
# application-oss.properties
aliyun.oss.endpoint=oss-cn-shanghai.aliyuncs.com
aliyun.oss.bucketName=mall-product
六、技术全景图与学习路径
技术模块 | 核心技术点 | 应用场景 |
---|---|---|
核心框架 | Spring IOC/AOP、MyBatis | 对象管理、SQL操作 |
安全认证 | JWT、拦截器 | 用户登录、接口权限 |
数据存储 | MySQL事务、阿里云OSS | 订单一致性、文件存储 |
异常处理 | @ControllerAdvice | 统一错误响应 |
性能优化 | 过滤器、AOP日志 | XSS防护、接口监控 |
学习建议:
- 从Spring Boot+MyBatis Plus入手,快速搭建CRUD项目
- 逐步集成JWT和OSS,实现完整业务流
- 通过AOP+拦截器深化框架理解
- 参考电商管理系统和旅游平台实战项目
更多推荐
所有评论(0)