企业级开发项目"苍穹外卖"(二)
添加公共通用注解
因为接下来的许多接口需要用到create_time,update_time数据库添加语句等,这种会增加代码的重复性,这时这时直接添加一个注释然后添加到Mapper类里面。就是利用AOP进行公共段自动填充技术
先在server模块下创建annotation.AutoFill注解类,里面编写:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoFill {
OperationType value();
}
OperationType是一个枚举类,里面有UPDATE,INSERT
然后在在server里面创建aspect.AutoFillAspect类,里面编写:
@Aspect
@Component
@Slf4j
public class AutoFillAspect {
@Pointcut("execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)")
public void autoFillPointCut(){}
/*
开始进行共享字段自动填充
*/
@Before("autoFillPointCut()")
public void autoFill(){
log.info("开始进行共享字段自动填充...");
}
}
execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)的意思就是切入点为com.sky.mapper下的所有类的所有方法并且有AutoFill注解的。Before就是一个输出日志。
菜品管理
添加菜品
先在Controller层里面添加一个通用接口类:CommonController,里面编写文件上传接口,将文件上传到阿里云OSS。
配置阿里OSS直接在yml里面编写nameid和key就行,会发现编写时有提示,因为在common模块里面已经添加了AliOSSProtites的配置属性注解:@ConfigurationProperties(prefix = "sky.alioss")
yml:注意':'后面有个空格
sky:
jwt:
# 设置jwt签名加密时使用的秘钥
admin-secret-key: itcast
# 设置jwt过期时间
admin-ttl: 7200000
# 设置前端传递过来的令牌名称
admin-token-name: token
alioss:
access-key-id: ${sky.alioss.access-key-id}
access-key-secret: ${sky.alioss.access-key-secret}
bucket-name: ${sky.alioss.bucket-name}
endpoint: ${sky.alioss.endpoint}
这里不直接写是为了规范,隐藏key等密码。真实数据在dev-yml里面编写,因为上边写了
spring:
profiles:
active: dev