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

一个空间怎么做两个网站 跳转北京seo优化多少钱

一个空间怎么做两个网站 跳转,北京seo优化多少钱,wordpress培训类网站,成都网站建制作简介 javaEE5引入了PostConstruct和PreDestroy两个作用于Servlet生命周期的注解#xff0c;实现Bean初始化之前和销毁之前的自定义操作 使用场景 在项目中主要是在Servlet初始化之前加载一些缓存数据等 API使用说明 PostConstruct 注释用于在依赖关系注入完成之后需要执行…简介 javaEE5引入了PostConstruct和PreDestroy两个作用于Servlet生命周期的注解实现Bean初始化之前和销毁之前的自定义操作 使用场景 在项目中主要是在Servlet初始化之前加载一些缓存数据等 API使用说明 PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上以执行任何初始化。此方法必须在将类放入服务之前调用。支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源用 PostConstruct 注释的方法也必须被调用。只有一个方法可以用此注释进行注释。应用 PostConstruct 注释的方法必须遵守以下所有标准该方法不得有任何参数除非是在 EJB 拦截器 (interceptor) 的情况下根据 EJB 规范的定义在这种情况下它将带有一个 InvocationContext 对象 该方法的返回类型必须为 void该方法不得抛出已检查异常应用 PostConstruct 的方法可以是 public、protected、package private 或 private除了应用程序客户端之外该方法不能是 static该方法可以是 final如果该方法抛出未检查异常那么不得将类放入服务中除非是能够处理异常并可从中恢复的 EJB。 特点 1、只有一个非静态方法能使用此注解 2、被注解的方法不得有任何参数 3、被注解的方法返回值必须为void 4、被注解方法不得抛出已检查异常 5、此方法只会被执行一次 servlet执行流程 注意事项 使用此注解时会影响服务启动时间。服务启动时会扫描WEB-INF/classes的所有文件和WEB-INF/lib下的所有jar包。 PostConstruct注解的用法 PostConstruct是java5的时候引入的注解指的是在项目启动的时候执行这个方法也可以理解为在spring容器启动的时候执行可作为一些数据的常规化加载比如数据字典之类的。 被PostConstruct修饰的方法会在服务器加载Servle的时候运行并且只会被服务器执行一次。PostConstruct在构造函数之后执行 也就是加载顺序 服务器加载Servlet - servlet 构造函数的加载 - postConstruct -initinit是在service 中的初始化方法. 创建service 时发生的事件. -Service-destory-predestory-服务器卸载serlvet 那么问题spring中Constructor、Autowired、PostConstruct的顺序 Constructor Autowired PostConstruct 依赖注入的字面意思就可以知道要将对象p注入到对象a那么首先就必须得生成对象p与对象a才能执行注入。所以如果一个类A中有个成员变量p被Autowired注解那么Autowired注入是发生在A的构造方法执行完之后的。 PostConstruct应用场景 如果想在生成对象时候完成某些初始化操作而偏偏这些初始化操作又依赖于依赖注入那么就无法在构造函数中实现。为此可以使用PostConstruct注解一个方法来完成初始化PostConstruct注解的方法将会在依赖注入完成后被自动调用。 PostConstructpublic void start() {try {int connect producer.connect();if (connect 0) {log.info(producer start success! groupName:{},namesrvAddr:{}, rocketMqProperties.getProducer().getGroupName(), rocketMqProperties.getNamesrvAddr());}} catch (MQException e) {e.printStackTrace();} }PreDestroypublic void stop() {try {if (producer ! null) {producer.close();log.info(producer closed);}}catch (MQException a){a.printStackTrace();} }在最近的工作中get到一个很实用的注解分享给诸位。 痛点 做过微信或支付宝支付的童鞋可能遇到过这种问题就是填写支付结果回调就是在支付成功之后支付宝要根据我们给的地址给我们进行通知通知我们用户是否支付成功如果成功我们就要去处理下面相应的业务逻辑如果在测试服务那么这个回调地址我们就需要填写测试服务的如果发布到线上那么我们就需要改成线上的地址。 针对上面的场景我们一般都会通过如下的方式进行一个动态配置不需要每次去改防止出现问题。 public class PayTest {Value(${spring.profiles.active})private String environment;public Object notify(HttpServletRequest request) {if (prod.equals(environment)) {// 正式环境} else if (test.equals(environment)) {// 测试环境}return SUCCESS;} }上面的代码看起来没有一点问题但是身为搬砖的我们咋可能这样搬姿势不对呀 问题 扩展性太差如果这个参数我们还需要在别的地方用到那么我们是不是还要使用Value的注解获取一遍假如有天我们的leader突然说吗test这个单词看着太low了换个高端一点的,换成dev那么我们是不是要把项目中所有的test都要改过来,如果少还好,要是很多,那我们怕不是凉了。 所以我们能不能将这些配置参数搞成一个全局的静态变量这样的话我们直接饮用就好了哪怕到时候真的要改那我也只需要改动一处就好了。 注意大坑 有的朋友可能就比较自信了那我直接加个static修饰下不就好了如果你真是打算这样做那你就准备卷好铺盖走人吧。直接加static获取到的值其实是一个null至于原因大家复习下类以及静态变量变量的加载顺序。 PostConstruct注解 那么既然说出了问题肯定就有解决方法不然你以为我跟你玩呢。 首先这个注解是由Java提供的它用来修饰一个非静态的void方法。它会在服务器加载Servlet的时候运行并且只运行一次。 改造 Component public class SystemConstant {public static String surroundings;Value(${spring.profiles.active})public String environment;PostConstructpublic void initialize() {System.out.println(初始化环境...);surroundings this.environment;} }结果 我们可以看到在项目启动的时候进行了初始化 到这里我们已经可以拿到当前运行的环境是测试还是正式这样就可以做到动态配置 最后想说 其实这个注解远不止这点用处像我之前写的Redis工具类我使用的是RedisTemplate操作Redis导致写出来的方法没办法用static修饰每次使用Redis工具类只能先注入到容器然后再调用使用了这个注解就可以完美的解决这种尴尬的问题。代码如下。 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;/*** ClassName RedisUtil* Description TODO* Version 1.0*/ Component public class RedisUtil {private static RedisTemplateObject, Object redisTemplates;Autowiredprivate RedisTemplateObject, Object redisTemplate;PostConstructpublic void initialize() {redisTemplates this.redisTemplate;}/*** 添加元素** param key* param value*/public static void set(Object key, Object value) {if (key null || value null) {return;}redisTemplates.opsForValue().set(key, value);} }
http://www.zqtcl.cn/news/947959/

相关文章:

  • 百度站长工具怎么查排名贵港网站制作
  • 运城个人网站建设学校网站建设目的
  • 住房城乡建设部门门户网站购物网站排名大全
  • 手机网站平台江门网站建设模板
  • 做本地网站需要什么资质百度多长时间收录网站
  • 网站建设公司使用图片侵权使用者有无责任夸克免费空间
  • 网站建设制作鸿运通做网站能用python吗
  • 站长源码之家Wordpress 新建标签
  • 太原网站建设详细策划如何建设网站简答题
  • 乡村生态旅游网站建设方案如何做网站的导航栏
  • wordpress百度百科网站开发 seo
  • 网站主机名wordpress主题修改底部版权
  • 网站官网怎么做龙岩iot开发福建小程序建设
  • 哪个学校设有网站开发专业北京有哪些网站公司
  • 做网站需要的带宽上行还是下行湖南竞网科技有限公司
  • 帝国cms企业门户网站仿站视频教程 网盘互联网金融p2p网站建设
  • 个人网站备案涉及支付宝做二手的网站都有哪些
  • 如何给网站做宣传导航栏网页怎么制作
  • 返利网站建设高校精神文明建设网站
  • 河北百度推广seoseo全网优化指南
  • 网站建设网页开发一个类引用另一个类的方法
  • 第四章第二节网站建设的教学设计云南网站建设一度科技公司
  • php 搭建手机网站建e网app下载
  • 河北手机版建站系统价格微信怎么开店铺小程序
  • 中国建设教育网官网是什么网站潮州seo建站
  • 如何做个购物网站学校网站设计的目的
  • 建设部网站158号文件1688官网app
  • 临沂科技网站建设在线网页截图工具
  • 聊城网站推广软件简单网页制作训练
  • wordpress去除文章作者seo核心技术排名