C# IObservable與IObserver觀察者模式
什麼是MAVEN
基於專案物件模型(POM)
是一個專案管理工具,可以對專案的打包部署安裝報告等做統一的管理
描述資訊(三個座標)
groupId
artifactId
versionId
Maven的windows安裝
maven3.6 ------ > 最低為jdk1.8
ali_repo
配置環境變數
原理與java相同
MAVEN的概念
庫(repository)
中央庫
maven社群維護,給全世界開發人員準備的庫
遠端庫(私服)
公司內部開發專案的交流
可以分模組處理
本地庫
為了後續的方便實用,將下載的資源放到本地的一個資料夾中
資源定位
定位標籤
<groupId>
域名倒寫,一個公司的具體某一個專案
<artifactId>
當前專案的一個模組
<version>
表示一個專案的具體版本
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.7.RELEASE</version> </dependency> </dependencies>
資源的結構
spring-beans-4.3.7.RELEASE.jar
資源
spring-beans-4.3.7.RELEASE.pom
maven資源的核心配置
spring-beans-4.3.7.RELEASE-javadoc.jar
文件
spring-beans-4.3.7.RELEASE-source.jar
原始碼
spring-beans-4.3.7.RELEASE.jar.sha1
hash雜湊計算是否丟包
MAVEN的專案外掛
在maven專案中可以在pom
檔案裡制定當前專案可以使用的各種外掛
原始碼包外掛
作為專案執行時載入的外掛資源,可以在pom檔案(每個專案的pom檔案)中的build標籤裡完成
execution
:不需要的依賴包
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
main方法的主清單配置外掛
在專案中存在main方法,作為jar包的入口類,cpu需要載入執行,maven軟體需要在打包時配置main方法所在的類路徑,否則jar包無法正常執行
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.wiscom.App</mainClass> <!-- 此處為主入口--> </manifest> </archive> </configuration> </plugin>
tomcat的maven外掛
這個外掛的核心tomcat程式碼,就是tomcat7版本,沒有tomcat8,沒有tomcat9
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- port --> <port>80</port> <!-- context path --> <path>/</path> <!-- utf-8 --> <uriEncoding>utf-8</uriEncoding> <useBodyEncodingForURI>utf-8</useBodyEncodingForURI> </configuration> </plugin>
eclipse整合maven
在maven中配置本地庫ali_repo
..../maven3.6/confsettings.xml/settings.xml
\
:需要轉義
/
:不需要轉義
<localRepository>E:/software/ali_repo</localRepository>
maven依賴
需要知道依賴的名稱
資源由三個標籤來定義座標
<groupId>
:域名倒寫,一個公司的具體某一個專案
<artifactId>
:某一個模組的名稱
<version>
:資源的版本依賴的傳遞性
maven會將所有依賴的jar包匯入
不需要的jar包可以使用
exclusion
遮蔽
依賴的使用範圍(scope)
一般只使用前兩種
complie
從編譯開始,打包,執行,安裝,部署等等(預設值)
test
測試時候使用,打包,執行,安裝,部署不在使用
runtime
除了編譯時不使用,其他的都跟隨
provide
編譯和測試時有效,但是執行,打包,部署,安裝不存在
system
與本地jar包有關,可以利用system範圍指定一個本地路徑的jar包
pom.xml
<dependency> <groupId>com.wiscom</groupId> <artifactId>test</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>C:\\maven-test01-1.0-SNAPSHOT.jar</systemPath> </dependency>
Maven的生命週期
可以通過run as ---> maven build 生成原生命令
建立
mvn archetype:generate
清空
mvn clean
編譯
mvn compile
測試
mvn test
打包
mvn package
安裝
mvn install
釋出
mvn deploy
創建出來的maven專案
src/main/java
:編寫工程程式碼資料夾
src/main/resources
:配置檔案存放位置,spring.xml/application.xml,properties
src/test/java
:測試程式碼
src/test/resources
:測試程式碼使用的配置檔案(如果沒有,預設使用src/main/resources內容)
@Test public void springCon(){ //通過載入配置檔案,執行獲取上下文物件 ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext ("classpath:spring/spring.xml"); //maven工程載入的配置檔案和配置各種內容,需要通過classload載入 //普通java工程bin/WEB-INF/classes下就是載入路徑 //指向target/classes,classpath //java的類載入器路徑起始地址,classpath==target/classes HelloController bean1 = context.getBean(HelloController.class); HelloService bean2 = context.getBean(HelloService.class); HelloDao bean3 = context.getBean(HelloDao.class); String name="wanglaoshi"; System.out.println(bean1.sayHi(name)); System.out.println(bean2.sayHi(name)); System.out.println(bean3.sayHi(name)); } //持久層的測試案例 @Test public void userQuery(){ ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext ("classpath:spring/spring.xml"); //獲取userController UserController uc=context.getBean(UserController.class); //查詢user User user=uc.queryOne(3); System.out.println(user); }