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;
    }
}
相关推荐
二闹29 分钟前
第十六章:监理基础知识(16.1监理的意义和作用--16.5监理要素)
笔记·产品经理
致***锌1 小时前
etf期权和个股期权哪个期权费更贵?
笔记
懒惰的bit10 天前
STM32F103C8T6 学习笔记摘要(四)
笔记·stm32·学习
zkyqss10 天前
OVS Faucet练习(下)
linux·笔记·openstack
浦东新村轱天乐10 天前
【麻省理工】《how to speaking》笔记
笔记
奔跑的蜗牛AZ10 天前
TiDB 字符串行转列与 JSON 数据查询优化知识笔记
笔记·json·tidb
cwtlw10 天前
Excel学习03
笔记·学习·其他·excel
杭州杭州杭州10 天前
计算机网络笔记
笔记·计算机网络
cyborg10 天前
终于再也不用在notion中写公式了
笔记
循环过三天10 天前
1.2、CAN总线帧格式
笔记·stm32·单片机·嵌入式硬件·学习