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

抄底券网站怎么做的网站效果图用什么做

抄底券网站怎么做的,网站效果图用什么做,上海专业网站建设 公司,制作网站注册页面模板Spring Boot组件化与参数校验 Spring Boot版本选择 2.3.x版本 2.6.x版本 Spring Boot核心思想 约定大于配置#xff0c;简化繁琐的配置 Spring Boot自动配置原理 SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类#xff0c;Spr…Spring Boot组件化与参数校验 Spring Boot版本选择 2.3.x版本 2.6.x版本 Spring Boot核心思想 约定大于配置简化繁琐的配置 Spring Boot自动配置原理 SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类SpringBoot需要运行这个类的main方法来启动SpringBoot应用 SpringBootApplication Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented Inherited SpringBootConfiguration EnableAutoConfiguration ComponentScan(excludeFilters {Filter(type FilterType.CUSTOM, classes TypeExcludeFilter.class),Filter(type FilterType.CUSTOM, classes AutoConfigurationExcludeFilter.class) }) public interface SpringBootApplication {SpringBootConfiguration:Spring Boot的配置类 标注在某个类上表示这是一个Spring Boot的配置类 Configuration:配置类上来标注这个注解 配置类 ----- 配置文件配置类也是容器中的一个组件本质上是Component EnableAutoConfiguration开启自动配置功能 以前我们需要配置的东西Spring Boot帮我们自动配置EnableAutoConfiguration告诉SpringBoot开启自动配置会帮我们自动去加载 自动配置类 ComponentScan 扫描包 相当于在spring.xml 配置中context:component-scan 但是并没有指定basepackage如果没有指定spring底层会自动扫描当前配置类所有在的包。TypeExcludeFilterspringboot对外提供的扩展类 可以供我们去按照我们的方式进行排除去找到所有自定义的TypeExcludeFilter的bean调用match方法满足一个则排除。AutoConfigurationExcludeFilter排除当前类路径下所有Configuration修饰的类并且是自动配置的类spring.factories中EnableAutoConfiguration配置了就是自动配置类 EnableAutoConfiguration Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented Inherited AutoConfigurationPackage Import(AutoConfigurationImportSelector.class) public interface EnableAutoConfiguration {// 略 }AutoConfigurationPackage 将当前配置类所在包保存在BasePackages的Bean中。供Spring内部使用。 Import(AutoConfigurationImportSelector.class) 关键点 可以看到在EnableAutoConfiguration注解内使用到了import注解来完成导入配置的功能而AutoConfigurationImportSelector实现了DeferredImportSelectorSpring延迟到项目beanDefinition已经全被扫描完才去执行selectImports,内部在解析Import注解时会调用getAutoConfigurationEntry方法。 下面是2.3.5.RELEASE实现源码getAutoConfigurationEntry方法进行扫描具有META-INF/spring.factories文件的jar包。 protected AutoConfigurationEntry getAutoConfigurationEntry(AnnotationMetadata annotationMetadata) {if (!isEnabled(annotationMetadata)) {return EMPTY_ENTRY;}AnnotationAttributes attributes getAttributes(annotationMetadata);// 从META-INF/spring.factories中获得候选的自动配置类ListString configurations getCandidateConfigurations(annotationMetadata, attributes);// 排重configurations removeDuplicates(configurations);//根据EnableAutoConfiguration注解中属性获取不需要自动装配的类名单// 根据:EnableAutoConfiguration.exclude// EnableAutoConfiguration.excludeName// spring.autoconfigure.exclude 进行排除SetString exclusions getExclusions(annotationMetadata, attributes); // 检查如果exclusions排除的类不在自动配置类configurations里抛出异常checkExcludedClasses(configurations, exclusions);// exclusions 也排除configurations.removeAll(exclusions);// 通过读取spring.factories 中AutoConfigurationImportFilter的配置类OnBeanCondition\OnClassCondition\OnWebApplicationCondition实例化进行过滤configurations getConfigurationClassFilter().filter(configurations);// 通过读取spring.factories 中的AutoConfigurationImportListener类实例化可以支持处理AutoConfigurationImportEvent的事件// 分别把候选的配置名单和排除的配置名单传进去做扩展fireAutoConfigurationImportEvents(configurations, exclusions);return new AutoConfigurationEntry(configurations, exclusions); }Conditional派生注解Spring注解版原生的Conditional作用 作用必须是Conditional指定的条件成立才给容器中添加组件配置配里面的所有内容才生效 Conditional扩展注解作用判断是否满足当前指定条件ConditionalOnJava系统的java版本是否符合要求ConditionalOnBean容器中存在指定BeanConditionalOnMissingBean容器中不存在指定BeanConditionalOnExpression满足SpEL表达式指定ConditionalOnClass系统中有指定的类ConditionalOnMissingClass系统中没有指定的类ConditionalOnSingleCandidate容器中只有一个指定的Bean或者这个Bean是首选BeanConditionalOnProperty系统中指定的属性是否有指定的值ConditionalOnResource类路径下是否存在指定资源文件ConditionalOnWebApplication当前是web环境ConditionalOnNotWebApplication当前不是web环境ConditionalOnJndiJNDI存在指定项 我们可以通过设置配置文件中启用 debugtrue属性来让控制台打印自动配置报告这样我们就可以很方便的知道哪些自动配置类生效 自定义starter 一、简介 SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter场景启动器我们通过引入springboot 为我提供的这些场景启动器我们再进行少量的配置就能使用相应的功能。即使是这样springboot也不能囊括我们所有的使用场景往往我们需要自定义starter来简化我们对springboot的使用。 模式 我们参照 spring-boot-starter 我们发现其中没有代码 我们在看它的pom中的依赖中有个 springboot-starter dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId /dependency我们再看看 spring-boot-starter 有个 spring-boot-autoconfigure dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-autoconfigure/artifactId /dependency启动器starter是一个空的jar文件仅仅提供辅助性依赖管理这些依赖可能用于自动装配或其他类库。需要专门写一个类似spring-boot-autoconfigure的配置模块用的时候只需要引入启动器starter就可以使用自动配置了 命名规范 官方命名空间 前缀spring-boot-starter-模式spring-boot-starter-模块名举例spring-boot-starter-web、spring-boot-starter-jdbc 自定义命名空间 后缀-spring-boot-starter模式模块-spring-boot-starter举例mybatis-spring-boot-starter 参数校验 引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId/dependency!--hibernate validator依赖--dependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator/artifactIdversion6.0.1.Final/version/dependency添加配置 Bean public Validator validator(){ValidatorFactory validatorFactory Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory();return validatorFactory.getValidator(); }使用 Length(max 64, message “职务名称超长”) 不校验null的字段 Email 不去检验null和空字符串 Pattern 可以允许当前字段为null针对非null做校验 AssertTrue 不去检验null值 1Controller上的参数校验主要针对于RequestBody的POJO 2Bean的方法参数校验 3针对bean的属性做参数校验 Valid和Validated区别 区别ValidValidated提供者JSR-303 规范Spring,意味着只能用于POJO之外的地方比如controller类上、方法、参数上是否支持分组不支持支持标注位置METHOD, FIELD, CONSTRUCTOR, PARAMETER, TYPE_USETYPE, METHOD, PARAMETER嵌套校验支持不支持 异常处理 需要全局处理MethodArgumentNotValidException、ConstraintViolationException、BindException异常 ExceptionHandler(value MethodArgumentNotValidException.class) ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public Response? exceptionHandler(HttpServletRequest httpServletRequest, MethodArgumentNotValidException e) {log.error(字段校验错误!, e);String msg Optional.ofNullable(e.getBindingResult().getFieldError()).map(DefaultMessageSourceResolvable::getDefaultMessage).orElse(NETWORK_ERROR_MSG);return new Response(CommonErrorCode.FIELD_VALIDATE_FAIL.getCode(), msg); }ExceptionHandler(value ConstraintViolationException.class) ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public Response? exceptionHandler(HttpServletRequest httpServletRequest, ConstraintViolationException e) {log.error(字段校验错误!, e);ConstraintViolation? constraintViolation null;IteratorConstraintViolation? iterator e.getConstraintViolations().iterator();if (iterator.hasNext()) {constraintViolation iterator.next();}String msg Optional.ofNullable(constraintViolation).map(ConstraintViolation::getMessage).orElse(NETWORK_ERROR_MSG);return new Response(CommonErrorCode.FIELD_VALIDATE_FAIL.getCode(), msg); }ExceptionHandler(value BindException.class) ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public Response? exceptionHandler(HttpServletRequest httpServletRequest, BindException e) {log.error(字段校验错误!, e);String msg Optional.ofNullable(e.getBindingResult().getFieldError()).map(DefaultMessageSourceResolvable::getDefaultMessage).orElse(NETWORK_ERROR_MSG);return new Response(CommonErrorCode.FIELD_VALIDATE_FAIL.getCode(), msg); }
http://www.dnsts.com.cn/news/31160.html

相关文章:

  • 制作网络网站营口建设信息网站
  • 网站关键词怎么布局seo优化宣传
  • 免费网站推广appwordpress 配置数据库
  • 云服务器拿来做网站用ps怎么做网站导航条
  • 网站建设的维护与更新做网站怎么字体全部变粗了
  • 辽宁建设科技信息网网站网站开发为什么需要团队完成
  • 茶叶网站建设策划方案 u001f什么网站都能进的浏览器
  • 提供专业网站小程序开发网址二维码生成器
  • c2c电子商务网站开发游戏网站建设项目规划
  • 织梦建站要多少钱网站图片模板
  • 四川省建设监理协会网站关键词优化百家号
  • 广州外贸网站建设 open福州网
  • 什么是部署php网站微信公众号平台官网登陆
  • 做网站充值系统vue.js做个人网站
  • 西安网站开发制作公司网站开发岗位之间的关联
  • 长春市住房建设局网站清润邯郸网站
  • 学院网站建设及维护实施办法做卖图片的网站能赚钱吗
  • 网站服务器维护费用湛江搜索引擎网站推广
  • 郑州模板建站平台软件开发公司网站设计
  • 蚌埠网站建设文章影响网站速度因素 dns
  • 网站建设阿华seo正邦设计集团
  • 做网站用什么主题济南营销型网站建设哪家好
  • 公司要找网站公司电子商务网站建设书
  • 站长工具源码网络运维好学吗
  • 网站域名代备案重庆怎么站seo
  • 手机网站设计软件免费的排版软件
  • 温州网络公司网站建设宣传片制作费用报价表
  • 企业网站模板 下载南阳网站推广公司
  • 慈溪做网站南宁app下载
  • 企业网站建设视频教程wordpress 整合php