Java 注解:@PostConstruct和@PreConstruct

从Java EE5规范开始,Servlet增加了两个影响Servlet生命周期的注解(Annotation):@PostConstruct和@PreConstruct。这两个注解被用来修饰一个非静态的void()方法.而且这个方法不能有抛出异常声明。

使用方式,例如:

@PostConstruct                                 //方式1public void someMethod(){...}public @PostConstruct void someMethod(){        //方式2
        ...  }

 

1.@PostConstruct说明

     被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。

2.@PreDestroy说明

     被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。(详见下面的程序实践)

3.程序实践

web.xml

<!-- @PostConstruct和@PreDestroy注解 --><servlet><servlet-name>AnnotationServlet</servlet-name><servlet-class>com.servlet.AnnotationServlet</servlet-class></servlet>
<servlet-mapping><servlet-name>AnnotationServlet</servlet-name><url-pattern>/servlet/AnnotationServlet</url-pattern></servlet-mapping>

 

AnnotationServlet

package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AnnotationServlet extends HttpServlet {SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss.SSS");//设置日期格式,精确到毫秒public AnnotationServlet(){System.out.println("时间:"+df.format(new Date())+"执行构造函数...");}public void destroy() {this.log("时间:"+df.format(new Date())+"执行destroy()方法...");//super.destroy(); // Just puts "destroy" string in log// Put your code here
    }@PostConstructpublic void someMethod(){//this.log("执行@PostConstruct修饰的someMethod()方法...");//注意:这样会出错System.out.println("时间:"+df.format(new Date())+"执行@PostConstruct修饰的someMethod()方法...");}@PreDestroypublic void otherMethod(){System.out.println("时间:"+df.format(new Date())+"执行@PreDestroy修饰的otherMethod()方法...");}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.log("时间:"+df.format(new Date())+"执行doGet()方法...");}public void init() throws ServletException {// Put your code herethis.log("时间:"+df.format(new Date())+"执行init()方法...");}protected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{this.log("时间:"+df.format(new Date())+"执行service()方法...");super.service(request, response);}
}

 

4.注意事项

     注解多少会影响服务器的启动速度。服务器在启动的时候,会遍历Web应用的WEB-INF/classes下的所有class文件与WEB-INF/lib下的所有jar文件,以检查哪些类使用了注解。如果程序中没有使用任何注解,可以在web.xml中设置<web-app>的metadatacomplete属性为true来关掉服务器启动时的例行检查。

     

      支持注解的服务器需要支持到Servlet2.5及以上规范,所以Tomcat要6.0.X及以上版本才行。

 

 

转载于:https://www.cnblogs.com/jinnian18sui/p/10475458.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络(二十四)-路由算法及路由协议

1.1 路由算法 将最优的路径填入路由转发表。 1.2 路由算法分类 静态路由算法(非自适应路由算法)&#xff1a;管理员手动配置路由信息。 简便、可靠&#xff0c;在负载稳定、拓扑变化不大的网络中运行效果很好&#xff0c;广泛用于高度安全性的军事网络和较小的商业网络。 动…

研究速递:老年人的心智能力不一定在衰减,抗干扰的能力会更强

来源&#xff1a; 混沌巡洋舰长期以来&#xff0c;人们一直认为&#xff0c;衰老会导致我们的心智能力大幅下降。现在&#xff0c;乔治城大学医学中心的新研究&#xff0c;反驳这一观点&#xff0c;研究结果发表在2021年8月19日的《自然---- 人类行为》杂志上&#xff0c;由于世…

计算机网络(二十五)-IP数据报格式

1.1 TCP/IP协议栈 1.2 IP数据报格式 IP数据报如果过大&#xff0c;就会对它进行分片&#xff0c;每个分片为一个分组。 版本指的是IPv4或IPv6&#xff1b;首部长度&#xff1a;单位是4B(4字节)&#xff0c;最小为5&#xff1b;区分服务&#xff1a;指示期望获得哪种类型的服…

NLP≠NLU,机器学习无法理解人类语言

来源&#xff1a;图灵人工智能 编译&#xff1a;吴彤校对&#xff1a;暮编辑&#xff1a;琰琰长期以来&#xff0c;我们一直在与机器沟通&#xff1a;编写代码--创建程序--执行任务。然而&#xff0c;这些程序并非是用人类“自然语言“编写的&#xff0c;像Java、Python、C和C …

CentOS 7 安装并启动Nginx

一、安装必要的库 1、安装gcc gcc-c yum install -y gcc gcc-c 2、gzip模块需要 zlib 库 cd /usr/local wget http://zlib.net/zlib-1.2.11.tar.gz tar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./config make && make install3、重写模块需要pcre库 cd /usr/loc…

计算机网络(二十六)-IP数据报分片

一.最大传输单元MTU 1.1 数据链路层数据帧可封装数据的上限。以太网的MTU是1500字节&#xff1b; 1.2 当数据报超过了MTU&#xff0c;则进行分片&#xff1b; 1.3 分片-IP数据报格式 标识&#xff1a;同一数据报的分片使用同一标识&#xff1b;标志&#xff1a;只有两位有意…

论文速递:智能作为信息处理系统

来源&#xff1a;混沌巡洋舰圣塔菲研究院4月就智能的本质&#xff08;不管其是人类的&#xff0c;还是机器的&#xff09;举行的研讨会&#xff0c;旨在通过跨学科的整合来促进人工智能的发展。研讨会期间&#xff0c;来自不同学科的大牛聚集在一起&#xff0c;讨论如何将智力分…

Nginx启动后无法访问页面

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; 【问题描述】 Nginx启动后浏览器输入IP地址无法访问页面 一、检查Nginx是否成功启动 ./sbin/nginx -t 二、检查80端口是否开放 三、打开防火墙80端口&#xff0c;重启防火墙 firewall-cmd -…

计算机网络(二十七)-IPv4

一.IP地址 1.1 分类的IP地址 IP地址::{<网络号>,<主机号>} 32位&#xff1a;前八位为网络号&#xff0c;后面的为主机号------>点分十进制表示 路由器也有多个IP地址&#xff1b; 中间的三个组成一个无编号网络(无名网)&#xff1b;整个网络具有6个逻辑上的…

北京“十四五”高精尖产业规划:到2025年集成电路产业实现营业收入3千亿元...

来源&#xff1a;北京物联网智能技术应用协会近日&#xff0c;《北京市“十四五”时期高精尖产业发展规划》&#xff08;以下简称《规划》&#xff09;印发。2020年&#xff0c;北京建设国内规模最大的12英寸集成电路生产线、8英寸集成电路国产装备应用示范线。国家级专精特新“…

FTP协议、电子邮件系统、Telnet远程控制

一、FTP协议 FTP定义 文件传输协议&#xff08;File Transfer Protocol&#xff09;用于因特网文件传输&#xff08;RFC 959&#xff09; FTP特性 使用客户端/服务器模式使用TCP提供可靠的传输FTP属于维护状态的协议FTP使用两条TCP连接完成数据传输 FTP的两条连接 数据连…

游戏的「隐藏身份」:AI与现实世界的「王牌训练师」

来源&#xff1a;雷锋网虚拟游戏对人工智能的物理性优势已经开始显现。「注&#xff1a;文章来自国际电信联盟&#xff08;ITU&#xff09;」当谈到新兴技术在改善世界各地人们生活的潜力时&#xff0c;你首先想到的可能不是电子游戏。然而&#xff0c;虚拟游戏可以在训练人工智…

Hadoop的组成

一、Hadoop 1.x 和 2.x 的区别 二、HDFS架构 1&#xff09;NameNode&#xff08;nn&#xff09;&#xff1a;存储文件的元数据&#xff0c;如文件名&#xff0c;文件目录结构&#xff0c;文件属性&#xff08;生成时间、副本数、文件权限&#xff09;&#xff0c;以及每个文件…

深度学习与工业互联网安全:应用与挑战

来源&#xff1a;中国工程院院刊一、前言工业互联网是新一代信息技术与制造业深度融合的新兴工业生态与应用模式&#xff0c;通过“人、机、物”的泛在可靠互联&#xff0c;连接生产全要素、全产业链、全价值链&#xff0c;推动制造业生产方式和企业形态变革。工业互联网安全是…

Oracle 学习(1)

Oracle简介 Oracle是殷墟&#xff08;yīn Xu&#xff09;出土的甲骨文&#xff08;oracle bone inscriptions&#xff09;的英文翻译的第一个单词&#xff0c;在英语里是“神谕”的意思。Oracle公司成立于1977年&#xff0c;总部位于美国加州&#xff0c;是世界领先的信息管…

未来教育 · 软件破解

1、点击右侧链接&#xff0c;下载百度网盘 未来教育压缩包 [未来教育(提取码&#xff1a;hwx8)] 2、解压压缩包&#xff0c;安装软件 计算机等级考试模拟软件.exe (安装前务必打开网络)。 3、安装完成后&#xff0c;点击添加课程&#xff0c;选择自己需要的课程等级&#xff0…

网络攻防技术

&#xff11;.网络攻防 2.DDos具体攻击过程&#xff1a;拒绝服务攻击&#xff1b; 3.防护体系 防火墙:是位于两个(或多个)网络间&#xff0c;实施网间访问控制的一组组件的集合&#xff1b;IDS/IPS&#xff1a;VDS/VPS: 网络病毒检测系统VDS 是用于实时监测网络环境中病毒疫…

科普:不要对移动机器人有误解

来源&#xff1a;Allians联汇智造 作者&#xff1a;CSDN博主一、移动机器人介绍区别于AGV&#xff08;AutomaticGuided Vehicle&#xff0c;自动导引车&#xff0c;指装备有电磁或光学等自动引导设备&#xff0c;能按规定路径行走的自动运输车&#xff09;等自动化运输车&#…

Linux命令整理 —— 目录结构

二 、vi 和 vim 编辑器 【写在前面】 云计算与分布式这门课程的实验都是在Linux下完成的&#xff0c;虽然之前也一直也学习过Linux&#xff0c;但是一直没有系统的过一遍。这周花了两天的时间看完了尚硅谷的Linux教程&#xff0c;在这里记录一下学习过程&#xff0c;也方便自己…