1. 程式人生 > 實用技巧 >C# IObservable與IObserver觀察者模式

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);
    }