今日内容
今日内容注解常见的内置注解自定义注解使用注解(重点)元注解maven使用mavenmaven仓库配置settings.xml文件maven工程的目录结构Maven依赖管理
注解
常见的内置注解
-
@Override 重写
-
@Deprecated 过时
-
@SuppressWarning 抑制警告
自定义注解
-
使用关键字@interface表示注解
-
注解中含有抽象方法--->属性,属性的定义格式:修饰符 数据类型 属性名称();
如果在定义属性时,给属性赋默认值 可以使用default关键字 格式为: 属性名称() default 默认值;
属性,给注解提供更加详细的信息。
注解就相当于接口,属性相当于方法
注意事项
-
修饰符只能是public abstract 和接口命名要求是一样的 不写会默认添加
-
数据类型可以有以下:
-
基本类型
-
String
-
枚举类型 enum
-
注解类型
-
Class类型
-
以上类型的一维数组类型
-
-
属性名字为value ,并且注解的属性有且仅有一个属性时,在使用该注解时,可以省略value属性名
但是如果注解当中有多个属性时,使用时需要显式的添加value属性名。
-
使用注解(重点)
在类、方法、成员变量、局部变量、方法参数上面添加注解 格式: @注解名称(属性名1=属性值1,属性名2=属性值2,.....)
@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包中可以找到。
-
@Target(重点) 强调注解修饰的范围,表示注解类型应该出现在什么位置。对哪一块数据是有效的。
------> 类、方法、成员变量、局部变量、属性、方法参数上使用
注意:@Target(ElementType.ANNOTATION_TYPE)--->使用在注解上面。
-
FIELD: 字段上可以使用
-
METHOD:方法上可以使用
-
PARAMETER:参数上可以使用
-
TYPE:类、接口、枚举、注解上可以使用
-
CONSTRUCTOR:构造方法上面可以使用
-
LOCAL_VARIABLE:局部变量可以使用
-
TYPE_PARAMETER:表示注解可以用于类型参数声明时(1.8引入的)
-
TYPE_USE:类型使用说明(1.8引入的)
-
-
Retention(重点) :代表注解的可见范围。表示需要在什么级别保存该注解信息。用于描述注解的生命周期。
借助于RetentionPolicy属性,总共有三个取值:
-
SOURCE: 源码级别可见
-
CLASS: 在字节码文件级别可见,包括SOURCE级别
-
RUNTIME:在整个运行阶段可见,包括SOURCE和CLASS,可以通过反射获取
如果想要解析使用注解,需要把该注解的属性值设定为Runtime值。
如: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
-
下载安装
下载地址:https://maven.apache.org/download.cgi
解压即安装,解压时解压到一个没有【中文】和【空格】的目录中。
-
目录介绍
-
bin: 执行脚本文件
-
boot:运行maven的类加载器
-
conf:配置文件 settings.xml是整个maven的核心配置文件
-
lib:运行maven所需要的依赖jar包
-
-
配置环境变量
-
需要电脑上安装jdk1.7以上的版本,需要配置JAVA_HOME环境变量
-
配置MAVEN_HOME
-
先配置MAVEN_HOME的根目录:D:\Developer\maven\apache-maven-3.6.3
-
再配置path总路径:在path总路径的最后面添加:%MAVEN_HOME%\bin
-
-
验证maven环境变量是否配置成功
mvn -v
-
maven仓库
maven仓库 存放项目中用到的所有jar包,仓库分为三种:本地仓库、远程仓库、中央仓库
-
本地仓库:一般在开发者自己的电脑上,有一个目录存放jar包资源
-
远程仓库(私服):有的公司会在公司内部搭建一个属于公司内部的仓库。
-
中央仓库:maven团队进行管理、维护着世界上 所有用到的jar包资源,目前全球上大概有两亿多个。
-
访问仓库的顺序:本地仓库-->远程仓库--->中央仓库。
配置settings.xml文件
-
找到conf下面的settings.xml文件,编辑该文件
-
配置本地仓库位置:
<!-- 配置本地仓库位置 --> <localRepository>D:/Developer/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:存放webx.xml文件
-
src/test/java:存放单元测试的.java文件,如JUnit测试类
-
src/test/resources:存放测试用到的资源文件,如果没有会从main中查找
-
target:项目的输出位置,如编译之后生成的.class文件,打成的jar包文件和war包文件
-
pom:maven的核心配置文件
Maven依赖管理
通过maven的依赖管理对项目中的jar包同一管理,通过<dependencies>引入单个<dependency>
-
<dependencies> 标签 表示当前项目所有依赖的 jar包,其内部是<dependency>
-
<dependency> 标签表示具体的依赖器内部有四个标签
-
<groupId> 表示组织名+项目名
-
<artifactId> 表示模块或者项目名称
-
<version> 表示版本号
-
<scope> 表示依赖的范围
如:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
依赖范围 对于编译是否有效 对于测试是否有效 对于运行时是否有效 例子 complie √ √ √ spring-core test - √ - Junit provided √ √ - servlet-api runtime - √ √ JDBC驱动 system √ √ - 本地仓库 -
complie 表示编译时依赖,是默认值,会在编译、测试、运行都可以依赖
-
test 测试的时候依赖,编译和运行不依赖。
-
provided 只在编译和测试时依赖,运行时不依赖
-
runtime 运行和测试时依赖,编译的时候不依赖
-
system 依赖范围和provided一样。
-
-