欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-07 10:16:14
一、java中的包   java利用包来组织代码,一来使大型项目的代码结构清晰,二来包是一个命名空间的划分,即不同包中可以有相同名字的类,只需在在类名前加上包名即可区分它...

一、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中的变量配置替换成固定值