Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包

 更新时间:2015年11月25日 15:30:16   投稿:mrr  
这篇文章主要介绍了Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包的相关资料,需要的朋友可以参考下

一、java中的包

  Java利用包来组织代码,一来使大型项目的代码结构清晰,二来包是一个命名空间的划分,即不同包中可以有相同名字的类,只需在在类名前加上包名即可区分它们。

  Package xxx 必须位于java文件除了注释以外的第一行,用来指明当前文件中的类属于哪一个包,如果没有package语句,则该文件中的类都属于默认包。

  Import xxx用来在当前java文件中导入不属于当前包中的类,从而可以在当前文件中使用它们。

二、java中的环境变量

1.path

  环境变量其实就是一组变量(废话),它的作用是给系统和应用程序提供参数。例如:path,它告诉系统和应用程序一些系统必备的程序的存储位置,比如你要运行ipconfig命令,系统去哪里找它呢,就是通过path变量,把它所存储的位置挨个找一遍,直到找到为止。

  在java中,当我们要运行java程序,在控制台输入java xxx时,java这个应用程序(exe文件)到哪里找呢?系统就得通过path,这样就得把包含java这个应用程序的目录拷贝到path环境变量中,这样以后,再运行java xxx 就不会出现“‘java'不是内部或外部命令,也不是可运行的程序或批处理文件。”了。

2.classpath

  说完path,再来说说classpath,解决了java这个命令的问题,还有javac这个命令的问题,这里就牵扯到java中的包机制了。

  Java程序是由一个一个类构成的,类之间可以相互调用,还有一些java语言已经定义好的类,那么当程序要用到这些类的时候,去哪里找他们呢,这就需要classpath这个环境变量来指点迷津了。

  总结:classpath指明了类查找路径,如果类没有被打包,那就需要将其所在目录添加到classpath中,如果类被打包为JAR文件,则需要将JAR文件的实际名称写清楚。

Classpath一般设置为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”

  其中.代表当前目录,%JAVA_HOME%代表java jdk的路径。Dt.jar中主要是swing包中的各种控件类。Tools.jar中是各种工具类。

  当编译器碰到import语句时,就开始在CLASSPATH所包含的目录中查找。

  (参考:http://www.linuxidc.com/Linux/2012-01/52713.htm

3.JAVA_HOME

  指明jdk的路径

三、访问权限控制

1.类成员的访问控制

访问控制符:public/protected/包访问权限(无关键字即默认)/private

 

类本身

同包中的子类

不同包中的子类

同包中的非子类

不同包中的非子类

      总之

public

可以

可以

可以

可以

可以

都可以

private

可以

不可以

不可以

不可以

不可以

仅自身可见

default

可以

可以

不可以

可以

不可以

仅同包可见

protected

可以

可以

可以

可以

不可以

子类或者同包可见

2.类的访问控制权限

类只有两种访问控制权限:默认(即包访问控制权限)和public

下面还有点时间,接着给大家介绍maven profile实现多环境打包

项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为:
mvn package -P dev

其中“dev“为环境的变量id, 可以自己定义, 我定义的名称为:dev,qa,pre,prod , 具体在pom.xml中的配置如下:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
  ...... 
  <profiles> 
    <profile> 
      <id>dev</id> 
      <properties> 
        <env>dev</env> 
      </properties> 
      <activation> 
        <activeByDefault>true</activeByDefault> 
      </activation> 
    </profile> 
    <profile> 
      <id>qa</id> 
      <properties> 
        <env>qa</env> 
      </properties> 
    </profile> 
    <profile> 
      <id>pre</id> 
      <properties> 
        <env>pre</env> 
      </properties> 
    </profile> 
    <profile> 
      <id>prod</id> 
      <properties> 
        <env>prod</env> 
      </properties> 
    </profile> 
  </profiles> 
......  
  <build> 
    <filters> 
      <filter>config/${env}.properties</filter> 
    </filters> 
    <resources> 
      <resource> 
        <directory>src/main/resources</directory> 
        <filtering>true</filtering> 
      </resource> 
    </resources> 
    ...... 
  </build> 
</project> 

1.profiles定义了各个环境的变量id
2.filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile中定义的值
3.resources中是定义哪些目录下的文件会被配置文件中定义的变量替换,一般我们会把项目的配置文件放在src/main/resources下,像db,bean等,里面用到的变量在打包时就会根据filter中的变量配置替换成固定值

相关文章

  • 关于spring-security(记住密码,CSRF)

    关于spring-security(记住密码,CSRF)

    文章主要介绍了Spring Security中的PersistentTokenRepository、CSRF保护机制以及如何在登录页面添加记住我功能,并分享了相关实现代码和配置
    2024-11-11
  • Awaitility同步异步工具实战示例详解

    Awaitility同步异步工具实战示例详解

    这篇文章主要为大家介绍了Awaitility同步异步工具实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java实现的自定义迭代器功能示例

    Java实现的自定义迭代器功能示例

    这篇文章主要介绍了Java实现的自定义迭代器功能,结合具体实例形式分析了java简单迭代器的实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • java读取文件内容的三种方法代码片断分享(java文件操作)

    java读取文件内容的三种方法代码片断分享(java文件操作)

    本文介绍java读取文件内容的三种方法,代码可以直接放到程序中使用,大家参考使用吧
    2014-01-01
  • 详解spring boot应用启动原理分析

    详解spring boot应用启动原理分析

    这篇文章主要介绍了详解spring boot应用启动原理分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Java接口定义与实现方法分析

    Java接口定义与实现方法分析

    这篇文章主要介绍了Java接口定义与实现方法,简单说明了接口的概念、功能,并结合实例形式分析了接口的相关定义与使用技巧,需要的朋友可以参考下
    2017-11-11
  • Java中泛型的示例详解

    Java中泛型的示例详解

    泛型机制在项目中一直都在使用,不仅如此,很多源码中都用到了泛型机制。本文将通过一些示例带大家深入了解一下Java的泛型机制,需要的可以了解一下
    2022-10-10
  • java基础入门之IO流

    java基础入门之IO流

    流是一种抽象概念,它代表了数据的无结构化传递。。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出
    2021-06-06
  • MyBatisPlus+Spring实现声明式事务的方法实现

    MyBatisPlus+Spring实现声明式事务的方法实现

    本文主要介绍了MyBatisPlus+Spring实现声明式事务的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • Java中的动态代理实现代码实例

    Java中的动态代理实现代码实例

    这篇文章主要介绍了Java中的动态代理实现代码实例,jdk动态代理本质上是使用被代理对象的类加载器,通过被代理类实现的接口在运行时动态构造出代理类来增强原始类的功能的方法,需要的朋友可以参考下
    2023-12-12

最新评论