24.12.31 SpringBootDay02

复制代码
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SaveLog {
}

@Component
@Aspect
public class LogAspect {

    @Resource
    HttpSession session;
    @Resource
    SystemLogService logService;

    @Around("@annotation(com.javasm.bootdemo.common.interfaces.SaveLog)")
    public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable {
        Object proceed = joinPoint.proceed();
        //获取用户信息
        Object user = session.getAttribute("user");
        Integer uid = -1;
        if (user != null){
            WebUser webUser = (WebUser) user;
            uid = webUser.getUid();
        }
        //获取类名
        String className = joinPoint.getTarget().getClass().getName();
        //方法名
        String methodName = joinPoint.getSignature().getName();
        //参数
        Object[] args = joinPoint.getArgs();
        String argsString = Arrays.toString(args);
        //组装参数
        SystemLog systemLog = new SystemLog(uid,className,methodName,argsString);
        logService.insert(systemLog);
        return proceed;
    }
}

事务

开启事务

复制代码
@EnableTransactionManagement//开启事务

需要开启事务的方法上
@Transactional

事务是否生效,完全看是否抛出异常
    看方法是否向spring抛出异常
  • 在调用的一方,添加@Transactional
    • 事务生效了
  • 在被调用的一方,
    • 事务没有生效
  • 使用try...catch捕获异常,并打印,导致事务失效

Spring的事务机制,是看调用的方法,是否抛出异常

不要在每一个方法上都加@Transactional

只有多表调用的时候,才建议使用事务

跨域

复制代码
@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter(){
        //预先的配置
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        //所有的请求,都要过滤,都添加跨域
        source.registerCorsConfiguration("/**",buildConfig());
        return new CorsFilter(source);
    }
    private CorsConfiguration buildConfig(){
        CorsConfiguration config = new CorsConfiguration();
        //配置 允许所有的作用域
        config.addAllowedOrigin("*");
        //头信息
        config.addAllowedHeader("*");
        //方法
        config.addAllowedMethod("*");
        //cookie,session会失效
        config.setAllowCredentials(true);
        //有效期
        config.setMaxAge(3600L);

        return config;
    }
}
相关推荐
一只机电自动化菜鸟33 分钟前
一建机电备考笔记(36) 焊接技术—焊接方法与工艺(含考频+题型)
笔记·学习·职场和发展·生活·学习方法
小袁说公考1 小时前
公考培训机构2025年度测评:财务健康度与用户体验重构排名格局
大数据·人工智能·经验分享·笔记·其他·重构·ux
许长安1 小时前
gRPC Keepalive 机制
c++·经验分享·笔记·rpc
RainCity2 小时前
Java Swing 自定义组件库分享(五)
java·笔记·后端
脆皮炸鸡7552 小时前
库制作与原理~静态库&静态链接
linux·经验分享·笔记·学习方法
书生的梦2 小时前
《神经网络与深度学习》学习笔记(一)
笔记·深度学习·神经网络
袁小皮皮不皮2 小时前
HCIP-BFD 学习笔记
运维·服务器·网络·笔记·网络协议·学习·智能路由器
智者知已应修善业2 小时前
51单片机4按键控制共阳LED霓虹灯切换1整体闪烁2流水下3流水上4间隔闪烁】2023-10-27
c++·经验分享·笔记·算法·51单片机
Stream_Silver2 小时前
【 libusb4java实战:跨平台USB设备通信完全指南】
java·笔记·嵌入式硬件·microsoft
瑶光守护者3 小时前
【学习笔记】Ku终端本振同源频偏分析与上行中频补偿计算报告
笔记·学习