Java隨手筆記8之包、環(huán)境變量和訪問控制及maven profile實(shí)現(xiàn)多環(huán)境打包
一、java中的包
Java利用包來組織代碼,一來使大型項(xiàng)目的代碼結(jié)構(gòu)清晰,二來包是一個(gè)命名空間的劃分,即不同包中可以有相同名字的類,只需在在類名前加上包名即可區(qū)分它們。
Package xxx 必須位于java文件除了注釋以外的第一行,用來指明當(dāng)前文件中的類屬于哪一個(gè)包,如果沒有package語句,則該文件中的類都屬于默認(rèn)包。
Import xxx用來在當(dāng)前java文件中導(dǎo)入不屬于當(dāng)前包中的類,從而可以在當(dāng)前文件中使用它們。
二、java中的環(huán)境變量
1.path
環(huán)境變量其實(shí)就是一組變量(廢話),它的作用是給系統(tǒng)和應(yīng)用程序提供參數(shù)。例如:path,它告訴系統(tǒng)和應(yīng)用程序一些系統(tǒng)必備的程序的存儲(chǔ)位置,比如你要運(yùn)行ipconfig命令,系統(tǒng)去哪里找它呢,就是通過path變量,把它所存儲(chǔ)的位置挨個(gè)找一遍,直到找到為止。
在java中,當(dāng)我們要運(yùn)行java程序,在控制臺(tái)輸入java xxx時(shí),java這個(gè)應(yīng)用程序(exe文件)到哪里找呢?系統(tǒng)就得通過path,這樣就得把包含java這個(gè)應(yīng)用程序的目錄拷貝到path環(huán)境變量中,這樣以后,再運(yùn)行java xxx 就不會(huì)出現(xiàn)“‘java'不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件?!绷恕?/p>
2.classpath
說完path,再來說說classpath,解決了java這個(gè)命令的問題,還有javac這個(gè)命令的問題,這里就牽扯到j(luò)ava中的包機(jī)制了。
Java程序是由一個(gè)一個(gè)類構(gòu)成的,類之間可以相互調(diào)用,還有一些java語言已經(jīng)定義好的類,那么當(dāng)程序要用到這些類的時(shí)候,去哪里找他們呢,這就需要classpath這個(gè)環(huán)境變量來指點(diǎn)迷津了。
總結(jié):classpath指明了類查找路徑,如果類沒有被打包,那就需要將其所在目錄添加到classpath中,如果類被打包為JAR文件,則需要將JAR文件的實(shí)際名稱寫清楚。
Classpath一般設(shè)置為“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”
其中.代表當(dāng)前目錄,%JAVA_HOME%代表java jdk的路徑。Dt.jar中主要是swing包中的各種控件類。Tools.jar中是各種工具類。
當(dāng)編譯器碰到import語句時(shí),就開始在CLASSPATH所包含的目錄中查找。
?。▍⒖迹?a >http://www.linuxidc.com/Linux/2012-01/52713.htm)
3.JAVA_HOME
指明jdk的路徑
三、訪問權(quán)限控制
1.類成員的訪問控制
訪問控制符:public/protected/包訪問權(quán)限(無關(guān)鍵字即默認(rèn))/private
|
|
類本身 |
同包中的子類 |
不同包中的子類 |
同包中的非子類 |
不同包中的非子類 |
總之 |
|
public |
可以 |
可以 |
可以 |
可以 |
可以 |
都可以 |
|
private |
可以 |
不可以 |
不可以 |
不可以 |
不可以 |
僅自身可見 |
|
default |
可以 |
可以 |
不可以 |
可以 |
不可以 |
僅同包可見 |
|
protected |
可以 |
可以 |
可以 |
可以 |
不可以 |
子類或者同包可見 |
2.類的訪問控制權(quán)限
類只有兩種訪問控制權(quán)限:默認(rèn)(即包訪問控制權(quán)限)和public
下面還有點(diǎn)時(shí)間,接著給大家介紹maven profile實(shí)現(xiàn)多環(huán)境打包
項(xiàng)目開發(fā)需要有多個(gè)環(huán)境,一般為開發(fā),測試,預(yù)發(fā),正式4個(gè)環(huán)境,通過maven可以實(shí)現(xiàn)按不同環(huán)境進(jìn)行打包部署,命令為:
mvn package -P dev
其中“dev“為環(huán)境的變量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定義了各個(gè)環(huán)境的變量id
2.filters中定義了變量配置文件的地址,其中地址中的環(huán)境變量就是上面profile中定義的值
3.resources中是定義哪些目錄下的文件會(huì)被配置文件中定義的變量替換,一般我們會(huì)把項(xiàng)目的配置文件放在src/main/resources下,像db,bean等,里面用到的變量在打包時(shí)就會(huì)根據(jù)filter中的變量配置替換成固定值
相關(guān)文章
關(guān)于spring-security(記住密碼,CSRF)
文章主要介紹了Spring Security中的PersistentTokenRepository、CSRF保護(hù)機(jī)制以及如何在登錄頁面添加記住我功能,并分享了相關(guān)實(shí)現(xiàn)代碼和配置2024-11-11
Awaitility同步異步工具實(shí)戰(zhàn)示例詳解
這篇文章主要為大家介紹了Awaitility同步異步工具實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
java讀取文件內(nèi)容的三種方法代碼片斷分享(java文件操作)
本文介紹java讀取文件內(nèi)容的三種方法,代碼可以直接放到程序中使用,大家參考使用吧2014-01-01
詳解spring boot應(yīng)用啟動(dòng)原理分析
這篇文章主要介紹了詳解spring boot應(yīng)用啟動(dòng)原理分析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
MyBatisPlus+Spring實(shí)現(xiàn)聲明式事務(wù)的方法實(shí)現(xiàn)
本文主要介紹了MyBatisPlus+Spring實(shí)現(xiàn)聲明式事務(wù)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Java中的動(dòng)態(tài)代理實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了Java中的動(dòng)態(tài)代理實(shí)現(xiàn)代碼實(shí)例,jdk動(dòng)態(tài)代理本質(zhì)上是使用被代理對(duì)象的類加載器,通過被代理類實(shí)現(xiàn)的接口在運(yùn)行時(shí)動(dòng)態(tài)構(gòu)造出代理類來增強(qiáng)原始類的功能的方法,需要的朋友可以參考下2023-12-12

