Duplicate interface definition for class解决方法

本文主要讨论了iOS开发中遇到的预编译文件路径变更问题及其解决方案,当项目位置变动后,原有的预编译文件路径不再适用,文章提供了一种简单的方法来更新这些路径。
1、这个问题一般是重复导入,使用include的问题,不过iOS一般不用include,所以这个不是正解,还有就是预编译文件:
2、如果项目从桌面移动到桌面上一个文件夹内,预编译文件中的文件编译路径会改变,只要把预编译文件路径全部删掉,再加上就行了,很简单,只要打开预编译输入框,再拖动要预编译的文件至此,路径就过来了

转载于:https://www.cnblogs.com/xiaobaichangan/p/5120166.html

@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface UserAuth { } @Slf4j @Aspect @Component public class UserAuthAspect { @Pointcut("execution(public * com.tplink.nbu.demo.basicspringboot.controller.*.*(..))") public void controllers() { // controller pointcut definition } @Pointcut("@annotation(com.tplink.nbu.demo.basicspringboot.annotation.UserAuth)") public void needUserAuth() { // need user auth pointcut definition } @Around("controllers() && needUserAuth()") public Object arround(ProceedingJoinPoint pjp) throws Throwable { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); String credential = this.getCredential(request); if (credential == null) { throw new UnauthorizedException(); } Object[] args = pjp.getArgs(); Object[] newArgs = new Object[args.length]; for (int i = 0; i < args.length; i++) { newArgs[i] = this.checkAndAssignUserInfo(args[i], new UserInfo(credential)); } return pjp.proceed(newArgs); } private Object checkAndAssignUserInfo(Object newArg, UserInfo userInfo) { if (newArg instanceof UserInfo) { return userInfo; } return newArg; } private String getCredential(HttpServletRequest request) { return request.getHeader(HttpHeaders.AUTHORIZATION); } }@Getter @Setter @NoArgsConstructor @AllArgsConstructor public class UserInfo { private String username; }@Slf4j @RestController @RequestMapping("/user") public class UserLogInOutController { @Autowired private UserService userService; @PostMapping("/login") public UserLoginSuccessDTO login(@Valid @RequestBody UserLoginDTO loginDTO) { boolean auth = userService.auth(loginDTO); if (!auth) { throw new UnauthorizedException(); } log.info("{} login", loginDTO.getUsername()); return UserLoginSuccessDTO.builder() .token(loginDTO.getUsername()) .build(); } @UserAuth @PostMapping("/logout") public UserInfo logout(UserInfo userInfo) { log.info("{} logout", userInfo.getUsername()); return userInfo; } }@Getter @Setter public class UserLoginDTO { @NotEmpty private String username; @NotEmpty private String password; }@Getter @Builder public class UserLoginSuccessDTO { private String token; }@ResponseStatus(value = HttpStatus.UNAUTHORIZED) public class UnauthorizedException extends RuntimeException { }public interface UserService { boolean auth(UserLoginDTO loginDTO); }public class UserServiceImpl implements UserService { @Override public boolean auth(UserLoginDTO loginDTO) { return true; } } @SpringBootApplication public class BasicSpringBootApplication { public static void main(String[] args) { SpringApplication.run(BasicSpringBootApplication.class, args); } }请修改这几个类 使其完成需求:基于Spring Boot,编写一个简单的账号系统,功能性需求1.支持注册账号,账号信息包括用户名、密码、邮箱、家庭住址,其中邮箱不可重复2.支持使用邮箱+密码登录账号3.采用Actuator的Metrics统计注册接口出现邮箱重复的次数4.采用AOP对所有自定义HTTP接口方法的入参和出参进行日志打印5.使用自定义配置项限制系统的总注册用户数
最新发布
08-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值