掌握 Java 包機制、環境變量配置、訪問控制矩陣與 Maven Profile 多環境打包,是從寫代碼走向工程化交付的關鍵跨越。
com.a.User vs com.b.Userpackage 聲明必須為非註釋首行;無聲明則屬默認包(不推薦)import com.a.User),避免通配符導入造成命名衝突與編譯緩慢src/main/java/com/example| 變量 | 作用 | 典型配置 |
|---|---|---|
JAVA_HOME | JDK 安裝根目錄 | /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home |
PATH | 可執行文件搜索路徑 | 追加 %JAVA_HOME%\bin (Win) / $JAVA_HOME/bin (Unix) |
CLASSPATH | 類/資源文件搜索路徑 | .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (含當前目錄 .) |
注意:現代構建工具(Maven/Gradle)與 IDE 內建管理 CLASSPATH,手動配置多見於舊項目或命令行編譯調試。
| 修飾符 | 同類 | 同包子類 | 異包子類 | 同包非子類 | 異包非子類 |
|---|---|---|---|---|---|
| public | ✓ | ✓ | ✓ | ✓ | ✓ |
| protected | ✓ | ✓ | ✓ | ✓ | ✗ |
| default | ✓ | ✓ | ✗ | ✓ | ✗ |
| private | ✓ | ✗ | ✗ | ✗ | ✗ |
類級別:僅 public 與 default(包可見)。
最佳實踐:屬性 private + Getter/Setter;方法默認 private,按需放寬;避免 protected 洩露實現細節。
典型四環境:dev(開發)、qa(測試)、pre(預發)、prod(生產)。
<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>
src/main/resources/
├── config/
│ ├── dev.properties # jdbc.url=dev.db:3306
│ ├── qa.properties # jdbc.url=qa.db:3306
│ ├── pre.properties # jdbc.url=pre.db:3306
│ └── prod.properties # jdbc.url=prod.db:3306
└── application.yml # 引用 ${jdbc.url}
mvn clean package -P dev # 開發環境
mvn clean package -P prod # 生產環境
~/.m2/settings.xml 或 CI/CD 秘密管理,不入版本庫spring.profiles.active=@env@ 在 application.yml 中配合資源過濾