注解和maven

今日内容

今日内容注解常见的内置注解自定义注解使用注解(重点)元注解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>
      依赖范围对于编译是否有效对于测试是否有效对于运行时是否有效例子
      compliespring-core
      test--Junit
      provided-servlet-api
      runtime-JDBC驱动
      system-本地仓库
      • complie 表示编译时依赖,是默认值,会在编译、测试、运行都可以依赖

      • test 测试的时候依赖,编译和运行不依赖。

      • provided 只在编译和测试时依赖,运行时不依赖

      • runtime 运行和测试时依赖,编译的时候不依赖

      • system 依赖范围和provided一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值