当前位置: 首页 > news >正文

广西学校网站建设tikiwiki 与Wordpress

广西学校网站建设,tikiwiki 与Wordpress,传奇端游平台,html页面制作每一层对应每个包#xff0c;包名中应全为小写。 一、Common 层#xff08;实体类#xff09; 前提#xff1a;导入 Lombok 依赖 Data#xff1a;生成 get 和 set 方法以及 toString 方法 Getter#xff1a;只生成 get 方法#xff0c;避免对类中的成员变量修改。 …每一层对应每个包包名中应全为小写。 一、Common 层实体类 前提导入 Lombok 依赖 Data生成 get 和 set 方法以及 toString 方法 Getter只生成 get 方法避免对类中的成员变量修改。 EqualsAndHashCode(callSuper false)重写 equals 和 hashCode 方法 AllArgsConstructor生成全参的构造方法 NoArgsConstructor生成无参的构建方法 Builder(access AccessLevel.MODULE)实现不可变对象的创建避免直接使用构造函数初始化各个字段并提供了一种链式调用的方式来设置对象属性。 使用方法 以下是 mybtis - plus下的实体类字段常用注解 TableId(value id, type IdType.AUTO)标识主键可以根据 value 来对应表中字段名称type 为主键的自增 TableField(PLATFORM_TYPE)当该注解的 value 值与表中的字段名称一致时在进行 sql 编写时就不需要再进行别名处理了会自动映射实体类的属性名称。 TableField(exist false)标识该属性在对应的表中不存在不会加入到 mybatis - plus 提供的自动生成的 sql 语句中。 以下是对实体类中存在的日期格式的类型的格式指定 JsonFormat将 Java 对象序列化为 JSON 格式时日期类型字段的格式化方式。 DateTimeFormat用于将请求参数绑定到 Java 对象时日期类型字段的格式化方式。 //两个注解可以连用 JsonFormat(pattern yyyy-MM-dd,timezone GMT8) //后端 -- 前端 DateTimeFormat(pattern yyyy-MM-dd) //前端 --后端 private Date updateTime; 二、Dao / Mapper 层数据访问层 Repository将数据库访问异常翻译为 Spring 提供的统一的数据访问异常类型将类加入到 Spring 容器中。 Mapper 将类加入到 Spring 容器中告诉 MyBatis 框架对应的接口是一个映射器接口需要动态生成对应的实现类。 DS( DBConstants.DATASOURCE_GZZT_MYSQL)对于多数据源的项目用来指定数据源。 三、Service 层业务逻辑层 Service将类加入到 Spring 容器中。 Autowired根据类型在 Spring 容器中匹配相应的Bean。 Qualifier如果存在多个匹配的Bean可以用该注解指定一个来使用与 Autowired 连用。 Resource通过名称进行自动装配。 AutoWired和Resource注解的区别如下 注入方式Autowired是Spring提供的注解通过类型进行自动装配Resource是JavaEE提供的注解通过名称进行自动装配。 匹配规则Autowired默认按照类型进行匹配如果存在多个匹配的Bean则可以通过Qualifier注解指定具体的BeanResource默认按照名称进行匹配如果存在多个匹配的Bean则会根据容器的默认规则进行选择。 扩展性Autowired是Spring提供的注解更加灵活可以与其他Spring注解配合使用Resource是JavaEE提供的注解不支持与其他注解的配合使用。 总的来说Autowired是Spring推荐使用的注解更加灵活和强大而Resource是JavaEE提供的注解更加符合JavaEE的规范。在实际使用中可以根据具体的需求选择合适的注解。 Value(${effFileNameLocalDirPath})一般用来匹配配置文件中的属性值。 Transactional可以添加在类和方法上用来进行事务管理。 Slf4j开启日志通过 log.info()打印日志在 Lombok 包下。 四、Controller 层控制器层 1、在类上使用的注解 Controller用于标识控制器类处理请求并返回视图。 RestController用于标识控制器类处理请求并将响应结果转换为 JSON 或 XML 等格式。 RequestMapping可以在类级别或方法级别使用用于指定请求URL的路径。 CrossOrigin开启跨域。 2、在方法上使用的注解 RequestMapping可以在类级别或方法级别使用用于指定请求URL的路径。 GetMapping简化的RequestMapping符合 RESTful 风格用于处理GET请求一般是对应的查询业务。 PostMapping用于处理POST请求一般对应添加业务如果页面传递的参数为一个 JSON 对象就必须使用 POST 请求使用 GET 请求会报错。 PutMapping用于处理PUT请求一般对应修改业务。 DeleteMapping用于处理DELETE请求一般对应删除业务。 ResponseBody将方法的返回值封装为 JSON 对象。 3、在参数上使用的注解 GetMapping(one/{productId}) public ResultData one(PathVariable Integer productId) URLhttp://localhost:8080/order/one/1 PathVariable参数值对应的是 URL 中传递的值。 public ResultData params(RequestParam(defaultValue 1) Integer page,RequestParam(defaultValue 5) Integer size) URLhttp://localhost:8080/order/all?page1size5 RequstParam参数值对应的时 URL 中传递的参数值。 RequestBody将前端传递的请求体JSON 格式转换为对应的 Java 实体类。 4、异常处理器 ExceptionHandler用于处理控制器中出现的异常可以针对特定的异常类型进行处理。 ControllerAdvice结合 ExceptionHandler 注解在一个类中定义全局异常处理器。 RestControllerAdvice将异常处理的结果封装为 JSON 格式。 Component如果使用自定义的异常处理器使用该注解将该类注入到 spring 容器中。 以下是自定义拦截器的实现 Component public class MyHandlerExceptionResolver implements HandlerExceptionResolver {/**** param httpServletRequest request对象* param httpServletResponse response对象* param o 出现异常的Controller对象* param e 异常* return*/ Override public ModelAndView resolveException(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o,Exception e) { ​ModelAndView modelAndView new ModelAndView();//1、可以通过异常的类型来做出不同处理if(e instanceof LongException){modelAndView.setViewName(error);}else if(e instanceof OrderException){modelAndView.setViewName(error);}else if(e instanceof PayException){modelAndView.setViewName(error);} ​//2、前端分离项目。通过响应流进行进行响应httpServletResponse.getWriter().write(jsonStr); ​//打印异常信息e.printStackTrace();return modelAndView;} } 五、Config 层 配置类 Configuration用于标识一个类为配置类配置类中可以定义 Bean 的创建和依赖关系。 Bean用于定义一个 Bean 的配置信息并注入 Spring 容器中。通常用于 Configuration 类中的方法上。 六、Interceptor 层 拦截器 component用于标识一个类为Spring容器管理的组件Bean可以用于任何类。 拦截器类一般都是通过实现 HandlerInterceptor 接口的三个方法来进行请求的拦截。 Component public class LoginInterceptor implements HandlerInterceptor { //AOPOverridepublic boolean preHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler) throws Exception {System.out.println(进入到Handler之前执行【进行拦截操作】); ​HttpSession session request.getSession();Object loginUser session.getAttribute(loginUser);if(loginUser null){response.sendRedirect(request.getContextPath()/pages/login.jsp);return false;}return true; //是否放行 false表示不放行 true放行} ​Overridepublic void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(进入到Handler之后执行【进行后续操作】);} ​Overridepublic void afterCompletion(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(当请求成功之后数据渲染完成执行【资源释放】);} } 在完成拦截器的实现之后还需要将拦截器配置到 Web 的配置类中。 Configuration public class MyWebConfig implements WebMvcConfigurer { ​Autowired//配置的拦截器类private LoginInterceptor loginInterceptor; ​//文件上传配置//添加虚拟路径相同于通过一个路径来访问本地磁盘上的内容Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler(/image/**).addResourceLocations(file:D:\\upload\\);} ​ ​Override//跨域配置public void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**) //请求的资源 /**表示所有资源 、.allowedOrigins(*) //允许指定的源能访问.allowedHeaders(*) //允许携带的请求头.allowedMethods(*); //允许的请求方式//注意:当设置允许携带Cookie不允许将指定源设置为所有} ​Override//拦截器配置public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor) //添加拦截器类.excludePathPatterns(/)//.addPathPatterns(/**) //添加拦截的路径.excludePathPatterns(/user/**); //添加排除路径} } 以上就完成了整个拦截器的实现。 拦截器Interceptor和过滤器filter之间的区别如下 触发时机拦截器是在请求处理的前后触发可以对请求进行预处理和后处理而过滤器是在请求到达Servlet之前或响应返回客户端之前触发。 对象范围拦截器是针对HandlerController级别的它只能拦截处理器方法的调用而过滤器是对Servlet容器级别的它可以拦截整个请求响应链。 依赖关系拦截器依赖于Servlet容器例如Spring MVC中的DispatcherServlet而过滤器是独立于Servlet容器的可以在任何符合Servlet规范的容器中使用。 功能定位拦截器主要用于业务逻辑的处理可以在请求前或请求后进行处理、日志记录、权限校验等而过滤器主要用于请求过滤可以对请求和响应进行过滤、处理编码、安全验证等。 七、Advice 层切面层 Aspect标识该类为一个切面类。 Component用于扫描指定包下的组件将其注册为Spring的Bean。 PointCut切入点表示在应用程序中可以被拦截到的具体的点比如方法调用、异常抛出等。 Before前置通知。 After最终通知。 AfterRerurning后置通知。 AfterThrowing异常通知。 Around环绕通知。 综合使用可以通过 Spring 的切面编程在开发中的使用-CSDN博客 案例实现。 以下是对五种通知方式的解释 /**execution 表达式的使用*表示任意 ..表示任意参数完整表示public void com.service.impl.UserServiceImpl.addUser();以下是省略表述:void com.service.impl.UserServiceImpl.addUser();* com.service.impl.UserServiceImpl.addUser(..);* com.service.*.*Impl.*(..) */ Before(execution(* com.service.*.*Impl.*())) public void before(){System.out.println(前置通知在目标方法执行之前就执行(相当于开启事务)注解); } After(execution(* com.service.*.*Impl.*())) public void after(){System.out.println(最终通知在目标方法执行之后执行(相当于finally 无论异常与否都会返回)注解); } AfterReturning(execution(* com.service.*.*Impl.*())) public void afterReturning(){System.out.println(后置通知在目标方法返回返回值之后执行(相当于关闭事务)注解); } AfterThrowing(execution(* com.service.*.*Impl.*())) public void afterThrowing(){System.out.println(异常通知,在目标方法中出现异常是执行(相当于回滚事务)注解); } Around(execution(* com.service.*.*Impl.*())) public Object around(ProceedingJoinPoint joinPoint){Object objnull;try{System.out.println(前置通知在目标方法执行之前就执行(相当于开启事务)注解);//调用proceed()方法可以继续执行被增强的方法。objjoinPoint.proceed();System.out.println(后置通知在目标方法返回返回值之后执行(相当于关闭事务)注解);} catch (Throwable e) {System.out.println(异常通知,在目标方法中出现异常是执行(相当于回滚事务)注解);throw new RuntimeException(e);}finally {System.out.println(最终通知在目标方法执行之后执行(相当于finally 无论异常与否都会返回)注解);}return obj; } 八、SpringBoot 启动类上的注解 SpringBootApplication用于标注主类表示这是一个Spring Boot应用程序的入口类同时也包含了 EnableAutoConfiguration 和 ComponentScan 注解。 ComponentScan用于扫描指定包下的组件将其注册为Spring的Bean。 EnableAutoConfiguration用于自动配置Spring应用程序根据类路径下的依赖自动配置Bean。 MapperScan指定 MyBatis Mapper 接口所在的包Spring 在启动时会扫描指定的包路径并注册这些 Mapper 接口的实现类作为 Bean。 EnableScheduling用于开启定时任务的支持。 当开启定时任务时在对应的方法上添加 Scheduled 注解可以将该方法设置为一个定时任务。 Scheduled(cron 0 */5 * * * ?)标识该方法为一个定时任务通过 cron 参数来指定什么时候执行。 关于Scheduled的参数配置可以参考SpringBoot 项目定时任务的启动和Scheduled注解中的cron参数的设置原则-CSDN博客
http://www.pierceye.com/news/239937/

相关文章:

  • 彭阳网站建设多少钱嘉兴专业的嘉兴专业网站建设项目
  • 网站建设导航分哪几类公司网站大全
  • 网站建设 实训题安能建设总公司网站打不开
  • 莱西网站建设龙岗中心城有学网站建设
  • 重庆技术网站建设宝安做网站哪家好
  • 仿制网站建设写网站建设的软文
  • 0基础网站建设教程wordpress去掉rss订阅
  • 爱网站查询外贸推广具体是做什么
  • 商务网站价格找人做效果图那个网站
  • 上传到网站租一个服务器要多少钱
  • 网站制作服务合同安徽建设工程信息网文件
  • 成都企业网站建设公司正规的跨境电商平台有哪些
  • 中山工程建设信息网站网站监控系统
  • 个人网站想添加支付功能怎么做北京二次感染最新消息
  • 上海注册汽车租赁公司网站模板对seo的影响
  • 上海松江做网站公司wordpress 网站暂停
  • 太仓苏州网站建设网站的规划与建设课程设计
  • 遵义住房城乡建设厅网站电子商务网店毕业设计
  • 惠州市博罗县建设局网站防静电产品东莞网站建设技术支持
  • 茂名整站优化百度一下 你知道首页
  • 郑州网站微信微博维护品牌网站建设流程图
  • 网站建站销售怎么做做门窗安装去哪些网站找生意
  • 太原建站司点击查看荆州网站开发
  • 个人音乐网站开发宁波网站推广工作室电话
  • 建设部网站 造价工程师wordpress忘了秘密
  • 如何分析一个网站建设策划案湖南网络推广公司大全
  • 惠州市建设工程交易中心网站如何制作网页导航栏
  • 保山网站建设哪家好做led视频好的网站
  • 如何利用网站策划做好网站建设申请域名要多少钱
  • 专业做公司logo的网站谷歌网站推广方案