今日内容
注解
常见的内置注解
? @Override 重写
@Deprecated 过时
@SuppressWarning 抑制警告
自定义注解
? 使用关键字@interface表示注解 定义注解接口 在class位置写为@interface
? 注解中含有抽象方法--->属性(属性的定义格式:修饰符 数据类型 属性名称();)
如果在定义属性时,给属性赋默认值,可以使用default关键字 格式为:属性名称()default 默认值
属性,给注解提供更加详细的信息.
注解就相当于接口,属性相当于方法
注意事项
○ 修饰符只能是 public abstract 和接口的命名要求一样的 不写会默认添加
○ 数据类型可以有以下:
§ 基本类型
§ String
§ 枚举类型
§ 注解类型
§ Class字节码类型
§ 以上类型的一维数组类型
○ 属性名字为value,并且注解属性有且仅有一个属性时,在使用该注解时,可以省略value属性名
如果注解当中有多个属性时,使用时需要显示的添加value属性名
使用注解(重点)
在类,方法,成员变量,局部变量,方法参数上面添加注解 格式:@注解名称(属性名1=属性值1,属性名2=属性值2……)
Override
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
元注解
作用:用来负责注解其他注解的
○ 在java当中就定义了四个元注解meta-annotation类型,他们被用来提供其他注解annotation进行注解说明.
○ 这些类型和他们所支持的类都在java.lang.annotation
§ Documented
§ Inherited
§ Native
§ Repeatable
§ Retention
§ Target
§ @Target(重点) 强调注解修饰的范围,表示注解类型应该出现在什么位置.对哪一块的数据是有效的
--->类,方法,成员变量,局部变量.属性,方法参数上使用
注意:@Target(ElementType.ANNOTATION_TYPE)--->使用在注解上面
□ FIELD:字段上可以使用
□ METHOD:方法上可以使用
□ PARAMETER:参数上可以使用
□ TYPE:lei,接口,枚举,注解上可以使用
□ CONSTRUCTOR:构造方法上可以使用
□ LOCAL_VARIABLE:局部变量可以使用
□ TYPE_PARAMETER:表示注解可以用于类型参数声明时(1.8引入的)
□ TYPE_USE:类型使用说明(1.8引入的)
§ Retention(重点):代表注解的可见范围.表示需要在什么级别保存该注解信息.用于描述注解的生命周期
借助于RetentionPolicy属性,总共有三个取值
□ SOURCE:源码级别可见
□ CLASS:在字节码文件级别可见,包括SOURCE
□ RUNTIME:在整个运行阶段可见,包括SOURCE,CLASS,可以通过反射获取
如果想要解析使用注解,那么需要把该注解的属性值设定为Runtime值.
如:@Retention(RetentionPolicy.RUNTIME)
§ Documented:说明该注解将被包含在javadoc中,意思是生成帮助文档时对应位置上含有注解信息
§ Repeatable:元注解@Repeatable是JDK1.8新引入的,他表示在同一个位置重复相同的注解.在没有该注解前,
一般是无法在同一个类型上使用相同的注解,他的使用需要借助容器来存储此注解
? Class<? extends Annotation>向上限定 只能传递Annotation以及它的子类
? Class<? super Annotation>向下限定 只能传递Annotation以及它的父类
§ Inherited:表明子类可以继承父类中的注解
maven
maven意思是内行,专家
maven是一个项目管理工具,它包含了一个项目对象模型(POM project Object Model),一组标准集合,一个项目生命周期(Project lifecycle)
一个依赖管理系统(Dependency Management System)和用来运行定义在生命周期阶段(phase)上的插件(plugins)目标(goal)的逻辑工具
实际中,maven就是用来管理项目中用到jar包
使用maven
? 下载安装
? 下载地址
…
? 解压即安装,解压是解压到一个没有[中文][空格]的目录下
? 目录介绍
○ bin:执行脚本文件
○ boot:运行maven的类加载器
○ conf:配置文件 settings.xml是整个maven的核心配置文件
○ lib:运行maven所需的依赖jar包
? 配置环境变量
○ 需要电脑上安装jdk1.7以上的版本,需要配置JAVA_HOME环境变量
○ 配置MAVEN_HOME
§ 先配置MAVEN_HOME根目录:D:\java8\maven\apache-maven-3.6.3
§ 再配置path总路径:在path总路径的后面添加:%MAVEN_HOME%\bin
○ 验证maven环境变量配置成功
mvn-version
maven仓库
maven仓库 存放项目中用到的所有jar包,仓库分为三种:本地仓库,远程仓库,中央仓库
? 本地仓库:一般在开发者自己的电脑上,有一个目录存放jar包资源
? 远程仓库(私服):有的公司会在公司内部打架一个属于公司内部的仓库
? 中央仓库:maven团队进行管理,维护着世界上所有用到的jar包,目前全球上大概有两亿多个.
? 访问仓库的顺序:本地仓库-->远程仓库-->中央仓库
配置本地仓库
? 找到conf下面的settings.xml文件,编辑该文件
<!-- 配置本地仓库位置 -->
<localRepository>D:/java8/maven/m2/repository</localRepository>
? 配置JDK1.8的版本,maven默认是jdk1.5
<profile>
<id>jdk18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
? 配置阿里镜像地址
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
maven工程的目录结构
maven的目录结构具有一定的目录规范,使用maven工具来构建项目,必须遵从maven目录规范
? src/main/java:存放项目的java文件
? src/main/resources: 存放项目的资源文件 如:db.properties,后面用到框架Spring applicationContext.xml
如mybatis框架,SqlMapConfig.xml
? src/main/webapp:web工程的web资源
? src/main/webapp/WEB-INF:存放web.xml文件
? src/test/java:存放单元测试的.java文件,如JUnit测试类
? src/test/resources:存放测试用到的资源文件,如果没有会从main中查找
? target:项目的输出位置,编译之后生成.class文件,打成的jar包文件和war包文件
? pom: maven的核心配置文件
maven依赖管理
通过maven依赖管理对项目中的jar包统一管理,通过<dependencies>引入单个</dependencies>
? <dependencies>标签表示当前项目所有依赖的jar包,其内部是<dependencies>
? <dependency>标签表示具体的以来其内部有四个标签
<groupId>表示组织名+项目名</groupId>
<artifactId>表示模块或者项目名称</artifactId>
<version>表示版本号</version>
<packaging>表示依赖范围</packaging>
如:
<dependencies>
<dependency>
<groupId>com.zhiyou100</groupId>
<artifactId>maven01</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependency>
</dependencies>
依赖范围 对于编译是否有效 对于测试是否有效 对于运行时是否有效 例子
complie √ √ √ spring-core
test × √ × JUnit
provided √ √ × servlet-api
rentime × √ √ JDBC驱动
system √ √ × 本地仓库
complie 表示编译时依赖,是默认值,会在编译,测试,运行都可以依赖
test 测试的时候依赖,编译和运行不依赖
provided 指在编译和测试时依赖,运行时不依赖
rentime 运行和测试时依赖,编译时不依赖
system 依赖范围和provided范围一样
原文:https://www.cnblogs.com/shangjinshuai/p/14443387.html