Java隨手筆記8之包、環(huán)境變量和訪問(wèn)控制及maven profile實(shí)現(xiàn)多環(huán)境打包
一、java中的包
Java利用包來(lái)組織代碼,一來(lái)使大型項(xiàng)目的代碼結(jié)構(gòu)清晰,二來(lái)包是一個(gè)命名空間的劃分,即不同包中可以有相同名字的類,只需在在類名前加上包名即可區(qū)分它們。
Package xxx 必須位于java文件除了注釋以外的第一行,用來(lái)指明當(dāng)前文件中的類屬于哪一個(gè)包,如果沒(méi)有package語(yǔ)句,則該文件中的類都屬于默認(rèn)包。
Import xxx用來(lái)在當(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)去哪里找它呢,就是通過(guò)path變量,把它所存儲(chǔ)的位置挨個(gè)找一遍,直到找到為止。
在java中,當(dāng)我們要運(yùn)行java程序,在控制臺(tái)輸入java xxx時(shí),java這個(gè)應(yīng)用程序(exe文件)到哪里找呢?系統(tǒng)就得通過(guò)path,這樣就得把包含java這個(gè)應(yīng)用程序的目錄拷貝到path環(huán)境變量中,這樣以后,再運(yùn)行java xxx 就不會(huì)出現(xiàn)“‘java'不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件?!绷?。
2.classpath
說(shuō)完path,再來(lái)說(shuō)說(shuō)classpath,解決了java這個(gè)命令的問(wèn)題,還有javac這個(gè)命令的問(wèn)題,這里就牽扯到j(luò)ava中的包機(jī)制了。
Java程序是由一個(gè)一個(gè)類構(gòu)成的,類之間可以相互調(diào)用,還有一些java語(yǔ)言已經(jīng)定義好的類,那么當(dāng)程序要用到這些類的時(shí)候,去哪里找他們呢,這就需要classpath這個(gè)環(huán)境變量來(lái)指點(diǎn)迷津了。
總結(jié):classpath指明了類查找路徑,如果類沒(méi)有被打包,那就需要將其所在目錄添加到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語(yǔ)句時(shí),就開(kāi)始在CLASSPATH所包含的目錄中查找。
?。▍⒖迹?a >http://www.linuxidc.com/Linux/2012-01/52713.htm)
3.JAVA_HOME
指明jdk的路徑
三、訪問(wèn)權(quán)限控制
1.類成員的訪問(wèn)控制
訪問(wèn)控制符:public/protected/包訪問(wèn)權(quán)限(無(wú)關(guān)鍵字即默認(rèn))/private
|
類本身 |
同包中的子類 |
不同包中的子類 |
同包中的非子類 |
不同包中的非子類 |
總之 |
public |
可以 |
可以 |
可以 |
可以 |
可以 |
都可以 |
private |
可以 |
不可以 |
不可以 |
不可以 |
不可以 |
僅自身可見(jiàn) |
default |
可以 |
可以 |
不可以 |
可以 |
不可以 |
僅同包可見(jiàn) |
protected |
可以 |
可以 |
可以 |
可以 |
不可以 |
子類或者同包可見(jiàn) |
2.類的訪問(wèn)控制權(quán)限
類只有兩種訪問(wèn)控制權(quán)限:默認(rèn)(即包訪問(wèn)控制權(quán)限)和public
下面還有點(diǎn)時(shí)間,接著給大家介紹maven profile實(shí)現(xiàn)多環(huán)境打包
項(xiàng)目開(kāi)發(fā)需要有多個(gè)環(huán)境,一般為開(kāi)發(fā),測(cè)試,預(yù)發(fā),正式4個(gè)環(huán)境,通過(guò)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)文章
線程池調(diào)用kafka發(fā)送消息產(chǎn)生的內(nèi)存泄漏問(wèn)題排查解決
這篇文章主要為大家介紹了線程池調(diào)用kafka發(fā)送消息產(chǎn)生的內(nèi)存泄漏問(wèn)題排查解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08SpringBoot熱部署啟動(dòng)關(guān)閉流程詳解
Spring?Boot啟動(dòng)熱部署是一種技術(shù),它能讓開(kāi)發(fā)者在不重啟應(yīng)用程序的情況下實(shí)時(shí)更新代碼。這樣可以提高開(kāi)發(fā)效率,避免頻繁重啟應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-04-04springboot?filter配置多個(gè)時(shí),執(zhí)行順序問(wèn)題
這篇文章主要介紹了springboot?filter配置多個(gè)時(shí),執(zhí)行順序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12SpringBoot全局異常處理機(jī)制和配置攔截器方式
這篇文章主要介紹了SpringBoot全局異常處理機(jī)制和配置攔截器方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12spring事務(wù)隔離級(jí)別、傳播機(jī)制以及簡(jiǎn)單配置方式
這篇文章主要介紹了spring事務(wù)隔離級(jí)別、傳播機(jī)制以及簡(jiǎn)單配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Java實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出操作詳解
在平常的辦公工作中,導(dǎo)入導(dǎo)出excel數(shù)據(jù)是常見(jiàn)的需求,今天就來(lái)看一下通過(guò)Java如何來(lái)實(shí)現(xiàn)這個(gè)功能,感興趣的朋友可以了解下2022-02-02Java Spring開(kāi)發(fā)環(huán)境搭建及簡(jiǎn)單入門示例教程
這篇文章主要介紹了Java Spring開(kāi)發(fā)環(huán)境搭建及簡(jiǎn)單入門示例,結(jié)合實(shí)例形式分析了spring環(huán)境搭建、配置、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-11-11java 替換docx文件中的字符串方法實(shí)現(xiàn)
這篇文章主要介紹了java 替換docx文件中的字符串方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02