@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SaveLog {
}
@Component
@Aspect
public class LogAspect {@ResourceHttpSession session;@ResourceSystemLogService 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 {@Beanpublic 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;}
}