springboot包装

14241 ワード

作者:純微笑出所:http://www.ityouknow.com/  著作権は作者の所有になります.転載は出所を明記してください.
 
 
多くのネットユーザーが時々私に質問します.spring bootプロジェクトはどうやってテストして、どのように配置して、生産の中で何かいい配置案がありますか?この文章はspring bootがどのように開発し、調整し、最後の生産ラインに包装するかを紹介します.
開発段階
ユニットテスト
開発段階ではユニットテストが一番重要です.スプリングブックはユニットテストに対するサポートがもう整っています.
1、pomパッケージにspring-book-starter-testパッケージを追加して参照する.

	org.springframework.boot
	spring-boot-starter-test test  
2、開発試験類
最も簡単なハロルドを例にとると、試験クラスのクラスヘッドに追加が必要です.@RunWith(SpringRunner.class)@SpringBootTestの注釈は、試験方法のトップに@Testを追加すればよく、最後に方法の右ボタンrunをクリックして実行できます.
@RunWith(SpringRunner.class) @SpringBootTest public class ApplicationTests { @Test public void hello() { System.out.println("hello world"); } } 
実際に使用して、プロジェクトの正常な使用によってdao層コードまたはservice層コードを注入してテスト検証を行うことができます.spring-book-starter-testは多くの基礎的な使い方を提供しています.さらに、Controller層テストのサポートを増加しました.
//           
Assert.assertEquals(3, userMapper.getAll().size()); //     ,   Assert.assertTrue("  ,       200", status == 200); Assert.assertFalse("  ,       200", status != 200); 
MockMvcを導入してController層の試験をサポートしており、簡単な例は以下の通りである.
public class HelloControlerTests {

    private MockMvc mvc; //      @Before public void setUp() throws Exception { mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build(); } //  controller              @Test public void getHello() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } //  controller                  @Test public void testHello() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().string(equalTo("Hello World"))); } } 
ユニットテストはあなたのコードの第一の障壁を検証するので、コードの一部を書くごとにユニットテストを行う習慣を身につけて、全部集めてからテストを行わないでください.統合した後、全体の運行効果にもっと関心を持って、コードの下のブロックを落としやすいです.
統合テスト
全体の開発が完了したら、統合テストに入ります.spring bootプロジェクトの起動入り口はAppplication類の中で、直接run方法を実行すればプロジェクトを起動できます.しかし、デバッグの過程で、必ず継続的にデバッグコードが必要です.コードを修正するたびに、手動でサービスを再起動する必要があります.ウェブプロジェクトの中で調整して使用するのに便利です.
pomは以下の構成を追加する必要があります.
 
    
        org.springframework.boot
        spring-boot-devtools true      org.springframework.boot spring-boot-maven-plugin  true     
以上の配置を追加すると、プロジェクトは熱配置をサポートし、集積テストに非常に便利です.
生産ライン
実は私はこの段階を感じて、やはり比較的に簡単で普通は2種類に分けるべきです.一つはjarパッケージに包装して直接実行すること、もう一つはwarパッケージにしてtomcatサーバーの下に置くことです.
jarのカバンにします
あなたがmavenを使ってプロジェクトを管理するなら、以下の命令を実行してもいいです.
cd      ( pom.xml  )
mvn clean package
##          
##            
mvn clean package  -Dmaven.test.skip=true 
パッケージが完了したら、jarパッケージはtargetディレクトリに生成されます.名前は一般的にプロジェクト名+バージョン番号です.jar
jarパッケージコマンドを起動します
java -jar  target/spring-boot-scheduler-1.0.0.jar
このような方式では、コンソールが閉まりさえすれば、サービスが訪問できなくなります.バックグラウンドで動作する方式で起動します.
nohup java -jar target/spring-boot-scheduler-1.0.0.jar &
起動時に異なる設定ファイルの読み込みを選択することもできます.
java -jar app.jar --spring.profiles.active=dev
起動時にjvmパラメータを設定することもできます.
java -Xms10m -Xmx80m -jar app.jar &
gradleはgradleを使用する場合、以下のコマンドで梱包します.
gradle build
java -jar build/libs/mymodule-0.0.1-SNAPSHOT.jar
ワルの包みにする
ワルバッグにすると、普通は二つの方法に分けて実現できます.第一はeclipseという開発ツールを通じてwarカバンを導き出すことができます.もう一つはコマンドを使って完成します.ここでは主に次の種類を紹介します.
1、maven項目、pomパッケージを修正する
jar  
に変更する
war
2、包装する時tomcatを排除します.

	org.springframework.boot
	spring-boot-starter-web   org.springframework.boot spring-boot-starter-tomcat provided  
ここではscope属性をprovidedに設定します.このように最終的に形成されたWARにはこのJARパッケージは含まれません.TomcatやJettyなどのサーバーは運行時に関連するAPIクラスを提供します.
3、登録開始類
Servlet Initializer.javaを作成し、Spring BootServletInitializerを継承し、configreを上書きし、スタートクラスAppliationを登録します.外部webアプリケーションサーバがWeb Appliation Contectを構築するときは、起動クラスを追加します.
public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } } 
最後に実行
mvn clean package  -Dmaven.test.skip=true
アイテム名+バージョン番号.warファイルは、tomcatサーバにコピーして起動すればいいです.
gradle
使用するのがgradleなら、基本的なステップは同じです.build.gradleにwarのサポートを追加して、spring-boot-starter-tomcatを排除します.
...

apply plugin: 'war'

...

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:1.4.2.RELEASE"){ exclude mymodule:"spring-boot-starter-tomcat" } } ... 
再構築コマンドを使用します.
gradle build
warはbuild\libsディレクトリで生成されます.
生産運行と維持
JVMパラメータの値を表示します.
javaの持参したジンfo命令によってもいいです.
jinfo -flags pid
jarが起動した後に使うのは何gcですか?新生代ですか?年代別のメモリはどれですか?例は以下の通りです.
-XX:CICompilerCount=3 -XX:InitialHeapSize=234881024 -XX:MaxHeapSize=3743416320 -XX:MaxNewSize=1247805440 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=78118912 -XX:OldSize=156762112 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC 
-XX:CICompilerCount :最大並列コンパイル数-XX:InitialHeapSize 和  -XX:MaxHeapSize :JVMの初期および最大ヒープメモリサイズを指定します.-XX:MaxNewSize : JVMヒープエリア新生代メモリの最大割当可能サイズ…-XX:+UseParallelGC :ごみの回収にはパラリンピックコレクタを使うどうやって再起動しますか
簡単で乱暴です
直接キルトダウンプロセスを再度起動します.
ps -ef|grep java 
##    Java   pid
kill -9 pid
##     
Java -jar  xxxx.jar
もちろんこのような方式は伝統と暴力を比較しますので、以下の方法で管理することをお勧めします.
スクリプトの実行
mavenを使用する場合は、以下の構成が必要です.

    org.springframework.boot
    spring-boot-maven-plugin  true   
使用がgradleなら、以下の構成が必要です.
springBoot {
    executable = true
}
起動方法:
1、直接./yourapp.jar を選択します
2、サービスとして登録する
ソフトリンクを作ってjarパケットを指し、init.dに加入してコマンドで起動することもできます.
init.d例:
ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp
chmod +x /etc/init.d/yourapp
このようにして、stopまたはrestartコマンドを使用して、あなたのアプリケーションを管理することができます.
/etc/init.d/yourapp start|stop|restart
または
service yourapp start|stop|restart
このspring bootプロジェクトはどうやってテストしますか?調合して包装して生産します.もう紹介し終わったので、今後は時間を見つけてspring bootの自動化の運行と維持を研究してもいいです.
サンプルコード
参考: Installing Spring Boot appration s