1.在计算机编程语言Java中,什么是注释(Annotation)?

注释是一种可以添加到Java源代码的语法元数据或描述(注释不影响程序执行)

2.注释(Annotation)有什么作用?
    (1)传递编译器指令

java(@Deprecated@Override@SuppressWarnings)中有三个可用的内置注释,可用于向编译         器 提供某些指令。例如,@ override注释用于指示编译器注释方法是否覆盖该方法。

(2)传递构建时指令

        注释可以为编译器提供编译时指令,软件构建工具可以进一步使用它来生成代码,XML文件等。

(3)传递运行时指令

        我们可以定义在运行时可用的注释,我们可以使用java反射访问这些注释,并可用于在运行时向          程序提供指令。

Annotation可以用来注释类、方法、变量、参数和包,Java注释也可以嵌入和读取编译器生成的类文件,编辑器可以利用注释来检测错误和抑制警告。

3.内置注释(Built-in Annotations in Java)

@Override - 检查方法是否为覆盖。如果在其中一个父类或已实现的接口中找不到该方法,则会导致编译错误。

@Deprecated - 将方法标记为过时。如果使用该方法,则会发出编译警告。

@SuppressWarnings - 指示编译器禁止在注释参数中指定的编译时警告。

应用于其他注释的注释(Meta Annotation)

@Retention - 指定标记注释的存储方式 - 无论是仅代码,编译到类中,还是通过反射在运行时可用。

@Documented - 标记另一个注释以包含在文档中。

@Target - 标记另一个注释以限制可以应用注释的Java元素类型。

@Inherited - 标记要继承到带注释类的子类的另一个注释(默认情况下,注释不会继承到子类)

@SafeVarargs -使用泛型varargs参数抑制方法或构造函数的所有调用者的警告。@FunctionalInterface - 指定类型声明旨在成为Java 8以来的功能接口

@Repeatable - 指定注释可以多次应用于同一声明。

4.自定义注释C

注释是使用@interface创建的,后跟注释名称。每个方法声明都定义了注释类型的元素。方法声明不能包含任何参数或throws子句。返回类型仅限于基元,字符串,类,枚举,注释和前面类型的数组。方法可以具有默认值。

 // @Twizzle是方法toggle()的注释
@Twizzle
public void toggle() {
} // 声明注释Twizzle
public @interface Twizzle {
}

注释可能包含键值对的可选列表

 // Same as: @Edible(value = true)
@Edible(true)
Item item = new Carrot(); public @interface Edible {
boolean value() default false;
} @Author(first = "Oompah", last = "Loompah")
Book book = new Book(); public @interface Author {
String first();
String last();
}

注释本身可以注释以指示它们可以在何时何地使用

 @Retention(RetentionPolicy.RUNTIME) // 这个注解在通过反射运行时访问。
@Target({ElementType.METHOD}) // 此注解可以只适用于类的方法。
public @interface Tweezable {
}

框架经常使用注释作为方便地将行为应用于用户定义的类和方法的方式,否则必须在外部源(例如XML配置文件)中或以编程方式(使用API​​调用)声明这些类和方法。

5.java中的Scope

(scope)范围是指变量的生命周期和可访问性,范围定义应用程序数据如何保持和共享,范围的大小取决于声明变量的位置。例如,如果变量在类的顶部声明,那么所有类方法都可以访问它。如果它在方法中声明,那么它只能在该方法中使用。

JavaServer Faces应用程序中最常用的范围如下:

  • Request(@RequestScoped):请求范围在Web应用程序中的单个HTTP请求期间保持不变。在类似的应用程序hello1中,应用程序由单个请求和响应组成,bean使用请求范围。

  • Session(@SessionScoped):会话范围在Web应用程序中的多个HTTP请求中保持不变。当应用程序由需要维护数据的多个请求和响应组成时,bean使用会话范围。

  • Application(@ApplicationScoped):应用程序范围在所有用户与Web应用程序的交互中持续存在。

6.使用Managed Bean Scopes

您可以使用注释来定义bean的存储范围。您可以为bean类指定以下范围之一。

  • Application(javax.enterprise.context.ApplicationScoped):应用程序范围在所有用户与Web应用程序的交互中持续存在。

  • Session(javax.enterprise.context.SessionScoped):会话范围在Web应用程序中的多个HTTP请求中保持不变。

  • Flow(javax.faces.flows.FlowScoped):在用户与Web应用程序的特定流程交互期间,流程范围仍然存在。

  • Request(javax.enterprise.context.RequestScoped):请求范围在Web应用程序中的单个HTTP请求期间保持不变。

  • Dependent(javax.enterprise.context.Dependent):表示bean依赖于其他bean。

您可能希望@Dependent在托管bean引用另一个托管bean时使用。@Dependent如果应该仅在引用它时创建它,则第二个bean不应该在scope()中。如果将bean定义为@Dependent,则每次引用bean时都会重新实例化bean,因此不会将其保存在任何范围内。

如果托管bean由binding组件标记的属性引用,则应该使用请求范围定义bean。如果将bean放在会话或应用程序范围中,则bean需要采取预防措施以确保线程安全,因为 javax.faces.component.UIComponent每个实例都依赖于在单个线程内部运行。

如果要配置允许将属性与视图关联的bean,则可以使用视图范围。在用户导航到下一个视图之前,属性将一直存在。

Java Annotation/Scope的更多相关文章

  1. Java Annotation 必须掌握的特性

    什么是Annotation? Annotation翻译为中文即为注解,意思就是提供除了程序本身逻辑外的额外的数据信息.Annotation对于标注的代码没有直接的影响,它不可以直接与标注的代码产生交互 ...

  2. Java Annotation概述

    @(Java)[Annotation|Java] Java Annotation概述 用途 编译器的相关信息,如用于检测错误和一些警告 编译时和部署时的处理,如一些软件用于自动生成代码之类的 运行时处 ...

  3. Java Annotation 注解

    java_notation.html div.oembedall-githubrepos { border: 1px solid #DDD; list-style-type: none; margin ...

  4. paip.Java Annotation注解的作用and 使用

    paip.Java Annotation注解的作用and 使用 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog. ...

  5. Java Annotation认知(包括框架图、详细介绍、示例说明)

    摘要 Java Annotation是JDK5.0引入的一种注释机制. 网上很多关于Java Annotation的文章,看得人眼花缭乱.Java Annotation本来很简单的,结果说的人没说清楚 ...

  6. Java Annotation原理分析(一)

    转自:http://blog.csdn.net/blueheart20/article/details/18725801 小引: 在当下的Java语言层面上,Annotation已经被应用到了语言的各 ...

  7. Java Annotation 及几个常用开源项目注解原理简析

    PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示 ...

  8. Java Annotation 机制源码分析与使用

    1 Annotation 1.1 Annotation 概念及作用      1.  概念 An annotation is a form of metadata, that can be added ...

  9. Java Annotation手册

    Java Annotation手册 作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig) 原文:http://www.matri ...

随机推荐

  1. AtCoder - 4371 Align(分类讨论)

    Align AtCoder - 4371 Problem Statement You are given N integers; the i-th of them is Ai. Find the ma ...

  2. Android Studio 停靠模式(Docked Mode)

    如果之前选了任务一种模式,先全都取消了 然后点击Window -->Active Tool Window-->这个时候就可以选择Docked Mode了

  3. Java static 静态代码块、代码块

    简述 static{} 静态代码块,加载类之前执行 {} 代码块,每次new的时候都会被执行 示例 类: public class Student { int age; String name; bo ...

  4. Java web之javascript(2020.1.6)

    1.js输出: windows.alert()---警告框 document.write()---写到html文档中 innerHTML---写到HTML元素 console.log()---写到浏览 ...

  5. 关于Ueditor富文本编辑器的配置和使用心得

    一.环境和项目架构 本文章只是为了便于我个人记录日常笔记,如有错误或缺陷,请指出,文章仅供参考,如有转载请附上本文章链接. 介绍:将Ueditor富文本提交的内容直接生成Html文件,传到后台直接保存 ...

  6. SVN常见错误解决办法和批量add等命令

    批量添加所有更改文件 svn add . --no-ignore --force 提交文件 svn commit -m "up" File already exists: file ...

  7. SQL注入常用函数(注入小白的学习笔记)

    在盲注的情况下,往往需要一个一个字符的去猜解,即过程中需要截取字符串 在这里整理了一下一些常用函数 由于现阶段学习不够深入,整理分类不清楚具体,不过博主会慢慢进行完善 user() 查询当前数据库用户 ...

  8. 笔记本安装SSD固态硬盘详细的优化设置

    现在好多笔记本.台式机都加上固态硬盘了,固态硬盘的优势大家应该都有所了解了,在此略写一下固态硬盘优势:  1.启动快,没有电机加速旋转的过程:  2.不用磁头,快速随机读取,读延迟极小:  3.相对固 ...

  9. 九、Shell脚本高级编程实战第九部

    一.监控mysql主从同步是否异常,如果异常,发送短信给管理员 1)开发一个守护进程脚本每30秒实现检测一次. 2)如果错误号是:1158.1159.1008.1007.1062,请跳过 3)请使用数 ...

  10. StartDT AI Lab | 智能运筹助力企业提升决策效率、优化决策质量

    在人工智能和大数据时代,越来越多的云上数据和越来越智能的模型开始辅助人们做出各种最优决策,从运营效率.成本节约.最优配置等方方面面,实现降本增效,进一步提升商业效率.京东.美团.滴滴.顺丰等众多知名厂 ...