Java 랜덤 노트 8 패키지, 환경 변수 및 액세스 제어 및 maven 프로필 다중 환경 패키지 구현

1. 자바의 가방
자바는 패키지를 이용하여 코드를 구성한다. 첫째, 대형 프로젝트의 코드 구조를 명확하게 한다. 둘째, 패키지는 하나의 명칭 공간의 구분이다. 즉, 서로 다른 패키지에 같은 이름의 클래스가 있을 수 있고 클래스 이름 앞에 패키지 이름을 붙이기만 하면 그것들을 구분할 수 있다.
패키지 xxx는 현재 파일의 클래스가 어느 패키지에 속하는지 가리키는 자바 파일을 제외한 첫 줄에 있어야 합니다. 패키지 문장이 없으면 이 파일의 클래스는 기본 패키지에 속합니다.
Import xxx는 현재 자바 파일에서 현재 패키지에 속하지 않는 클래스를 가져와서 현재 파일에서 사용할 수 있습니다.
2. 자바의 환경 변수
1.path
환경 변수는 사실 하나의 변수 (쓸데없는 말) 이며, 그 역할은 시스템과 응용 프로그램에 파라미터를 제공하는 것이다.예를 들어path는 시스템과 응용 프로그램에 필요한 프로그램의 저장 위치를 알려줍니다. 예를 들어 ipconfig 명령을 실행하려면 시스템이 어디로 가야 합니까? 바로path 변수를 통해 저장된 위치를 하나씩 찾아서 찾을 때까지 찾는 것입니다.
자바에서 자바 프로그램을 실행하고 컨트롤러에서 자바 xxx를 입력할 때 자바 프로그램(exe 파일)은 어디로 찾습니까?시스템은 path를 통과해야 한다. 그러면 자바라는 프로그램을 포함하는 디렉터리를 path 환경 변수로 복사해야 한다. 그러면 나중에 자바 xxx를 실행하면 "'자바'는 내부나 외부 명령이 아니라 실행 가능한 프로그램이나 일괄 처리 파일이 나타나지 않는다."됐어.
2.classpath
path를 말하고 다시 classpath를 말해서 자바라는 명령의 문제를 해결했고 자바c라는 명령의 문제도 해결했다. 여기서 자바의 패키지 메커니즘과 관련이 있다.
자바 프로그램은 하나의 클래스로 구성되어 있다. 클래스 간에 서로 호출할 수 있고 자바 언어가 정의된 클래스도 있다. 그러면 프로그램이 이런 클래스를 사용하려고 할 때 어디로 가서 그들을 찾을까. 이것은classpath라는 환경 변수로 미진을 지적해야 한다.
요약:classpath는 클래스 검색 경로를 가리킨다. 클래스가 패키지되지 않으면 그 디렉터리를classpath에 추가해야 하고, 클래스가 JAR 파일로 패키지되면 JAR 파일의 실제 이름을 명확하게 써야 한다.
Classpath 는 일반적으로 ";%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar"로 설정됩니다.
그중.현재 디렉토리를 나타냅니다,%JAVA_HOME% 는 java jdk 경로를 나타냅니다.Dt.jar에서는 주로 스윙 패키지의 각종 컨트롤 클래스입니다.Tools.jar에는 각종 도구 종류가 있습니다.
컴파일러가 import 문장에 닿으면 CLASSPATH에 포함된 디렉터리에서 찾기 시작합니다.
(참조:http://www.linuxidc.com/Linux/2012-01/52713.htm)
3.JAVA_HOME
jdk의 경로를 가리키다
3. 액세스 권한 제어
1. 클래스 구성원의 액세스 제어
액세스 컨트롤러:public/protected/패키지 액세스 권한 (키워드 없음 기본값)/private
 
종류 자체
동봉의 하위 클래스
다른 가방의 하위 클래스
동봉중의 비자류
다른 가방의 비자류
어쨌든
public
할 수 있다
할 수 있다
할 수 있다
할 수 있다
할 수 있다
다 괜찮아요.
private
할 수 있다
안 돼요.
안 돼요.
안 돼요.
안 돼요.
자신만 표시
default
할 수 있다
할 수 있다
안 돼요.
할 수 있다
안 돼요.
패키지만 표시
protected
할 수 있다
할 수 있다
할 수 있다
할 수 있다
안 돼요.
하위 클래스 또는 패키지 표시
2. 클래스에 대한 액세스 제어 권한
클래스는 두 가지 액세스 제어 권한만 있습니다. 기본 (패키지 액세스 제어 권한) 과public
다음은 시간이 좀 남았습니다. 이어서 마븐 프로필의 다중 환경 패키지를 소개합니다.
프로젝트 개발에는 여러 개의 환경이 필요합니다. 일반적으로 개발, 테스트, 예발, 정식 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의 변수 설정에 따라 고정값으로 바꿉니다.

좋은 웹페이지 즐겨찾기