springboot:誘導統合、全体的なアプリケーション・フレームワークとプラグインが推奨します

二日前、デイモンは、我々はspringboot統合フレームワークだけでなく、いくつかの実用的なプラグイン導入のいくつかについて話と同じような状況はあなたに多くのことを教えてくれspringbootますおそらく、今日デイモン、私はあなたがそれを好き願っています。(最近による訓練にもっと疲れて、[今10]は非常に目収斂されているので、毎日の推薦が比較的遅いですが、私はあなたが私を許し願っています。)

春ブーツ統合ドルイド

  • ドルイドは、多くの設定オプションがあり、春のブートコンフィギュレーションファイルを簡単にドルイドを設定することができます。

  • application.ymlで設定ファイルを記述します。

  •   spring:
          datasource:
              name: test
              url: jdbc:mysql://192.168.16.137:3306/test
              username: root
              password:
              # 使用druid数据源
              type: com.alibaba.druid.pool.DruidDataSource
              driver-class-name: com.mysql.jdbc.Driver
              filters: stat
              maxActive: 20
              initialSize: 1
              maxWait: 60000
              minIdle: 1
              timeBetweenEvictionRunsMillis: 60000
              minEvictableIdleTimeMillis: 300000
              validationQuery: select 'x'
              testWhileIdle: true
              testOnBorrow: false
              testOnReturn: false
              poolPreparedStatements: true
              maxOpenPreparedStatements: 20
    复制代码
  • ここでは種類別:com.alibaba.druid.pool.DruidDataSource構成することができます!

春ブーツ統合MyBatisの

  • MyBatisのスプリング・ブート・スターター:春ブーツは2つの方法がありますが、MyBatisのを統合し、1つの簡単な方法は、MyBatisの公式のオファーを使用することです
  • もう一つの方法は、まだ同様の構成のMyBatisのスプリングで、このアプローチはいくつかのコードを自分で記述する必要がある、しかし、あなたは簡単にMyBatisの構成を制御することができます。

MyBatisのスプリング・ブート・スターターモード

  • pom.xmlに依存関係を追加します。

  • org.mybatis.spring.boot MyBatisのスプリング・ブートスターター1.0.0
  • MyBatisのスプリング・ブート・スターター依存関係ツリーを次のように

  • どのバージョン3.3.0を使用してMyBatisの、次のことができます。

  • <Mybatis.version> 3.3.0 </mybatis.version>プロパティは、デフォルトのバージョンを変更します。
  • バージョン1.2.3を使用してMyBatisのスプリング、次のことができます。
  • <MyBatisの-spring.version> 1.2.3 </mybatis-spring.version>デフォルトのバージョンを変更します。
  • application.ymlに割り当てを増やすには:

  • MyBatisの:mapperLocations:クラスパス:マッパー/ *のxml typeAliasesPackage:tk.mapper.model

  • 上記の2つの一般的な構成に加えて、次のとおりです。

  • mybatis.config:MyBatisの-config.xmlのファイルパスの設定
  • mybatis.typeHandlersPackage:スキャンパッケージtypeHandlers
  • mybatis.checkConfigLocation:構成ファイルが存在を確認
  • mybatis.executorType:実行モード(SIMPLE、REUSE、BATCH)を設定し、デフォルトはSIMPLEです

MyBatisの-春のファッション

  • このように使用し、通常に近いです。私たちは、MyBatisの依存性やMyBatisのスプリング依存を追加する必要があります。

  • そして、MyBatisConfigの設定クラスを作成します。

      	/**
      	 * MyBatis基础配置
      	 *
      	 * @author liuzh
      	 * @since 2015-12-19 10:11
      	 */
      	@Configuration
      	@EnableTransactionManagement
      	public class MyBatisConfig implements TransactionManagementConfigurer {
      	    @Autowired
      	    DataSource dataSource;
      	
      	    @Bean(name = "sqlSessionFactory")
      	    public SqlSessionFactory sqlSessionFactoryBean() {
      	        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
      	        bean.setDataSource(dataSource);
      	        bean.setTypeAliasesPackage("tk.mybatis.springboot.model");
      	
      	        //分页插件
      	        PageHelper pageHelper = new PageHelper();
      	        Properties properties = new Properties();
      	        properties.setProperty("reasonable", "true");
      	        properties.setProperty("supportMethodsArguments", "true");
      	        properties.setProperty("returnPageInfo", "check");
      	        properties.setProperty("params", "count=countSql");
      	        pageHelper.setProperties(properties);
      
              //添加插件
              bean.setPlugins(new Interceptor[]{pageHelper});
      
              //添加XML目录
              ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
              try {
                  bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
                  return bean.getObject();
              } catch (Exception e) {
                  e.printStackTrace();
                  throw new RuntimeException(e);
              }
          }
          @Bean
          public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
              return new SqlSessionTemplate(sqlSessionFactory);
          }
      
          @Bean
          @Override
          public PlatformTransactionManager annotationDrivenTransactionManager() {
              return new DataSourceTransactionManager(dataSource);
          }
      }
    复制代码
  • 上記のコードは、注釈サービス、増加@EnableTransactionManagementノートをサポートするために、SqlSessionFactoryとSqlSessionTemplateを作成し、リターンPlatformTransactionManagerBeanインチ

  • また、この構成では、我々はMyBatisのマッパーインターフェイスをスキャンする場合、我々は別のクラスでこの設定を配置する必要があり、このクラスを設定する必要があり、MapperScannerConfigurerないことに留意すべきです。

      /**
       * MyBatis扫描接口
       * 
       * @author liuzh
       * @since 2015-12-19 14:46
       */
      @Configuration
      //注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解
      @AutoConfigureAfter(MyBatisConfig.class)
      public class MyBatisMapperScannerConfig {
          @Bean
          public MapperScannerConfigurer mapperScannerConfigurer() {
              MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
              mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
              mapperScannerConfigurer.setBasePackage("tk.mybatis.springboot.mapper");
              //配置通用mappers
      Properties properties = new Properties();
              properties.setProperty("mappers", "tk.mybatis.springboot.util.MyMapper");
              properties.setProperty("notEmpty", "false");
              properties.setProperty("IDENTITY", "MYSQL");
              //这里使用的通用Mapper的MapperScannerConfigurer,所有有下面这个方法
              mapperScannerConfigurer.setProperties(properties);
      
              return mapperScannerConfigurer;
          }
      }
    复制代码
  • この構成は、そうでない場合は例外があるでしょう、この設定を持っている必要があり、@AutoConfigureAfter(MyBatisConfig.class)に注意を払う必要があります。その理由は、先に行われ、このクラスは、原因sqlSessionFactoryは、その後の実行エラーが存在しないということです。上記の構成を行った後MyBatisのを使用することができます。

ページネーションプラグインの統合と共通マッパーについて

  • プラグインは、プラグタブの例は、上記のコードです。
  • 一般マッパーは、実際の構成MapperScannerConfigurerの使用を設定するための時間です - tk.mybatis.spring.mapper.MapperScannerConfigurerプロパティを使用してプロパティを設定することができます。

インフラプロジェクトのブートの春統合MyBatisの

  • ページングユニバーサルプラグアンド関連情報マッパーは、上記のアドレスを介して見つけることができます。

春ブーツ静的リソースの取り扱い

  • 春のブートデフォルトの処理は、デフォルトで設定され、十分な、春ブーツ各種属性のWebMvcAutoConfigurationされていると思います。

  • 春ブーツは、デフォルトの処理モードを使用することをお勧めします、あなたは自分の場所が構成ファイルを変更することができます設定する必要があります。

  • あなたは春のMVCの完全な制御をしたい場合しかし、あなたは有効になりませんノートのWebMvcAutoConfiguration構成で増加した後、@Configurationの設定クラス@EnableWebMvcにメモを追加することができます、あなたが自分たちのニーズのそれぞれを設定する必要があります。この場合の構成提案参照WebMvcAutoConfigurationクラス。 - 春ブーツ・デフォルト・アプローチ、application.ymlプロファイルを設定することにより、構成の一部について、次の資料。ブートファイルを-.springはロードされたデフォルトのパスです

      /META-INF/resources/ 
      /resources/ 
      /static/ 
      /public/
      private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {  
              "classpath:/META-INF/resources/", "classpath:/resources/",  
              "classpath:/static/", "classpath:/public/" };  
    复制代码
  • すべてのローカル静的リソースはむしろ下のWebアプリケーションよりも、クラスパスに次のように設定されています

リソースマッピングの設定

  • 春のブート時のデフォルト設定/ ** /静的にマッピングされた(または/公共/リソース、/ META-INF /リソース)、/ webjars / **にマッピングされました
  • クラスパス:/ META-INF /リソース/ webjars /。
  • 注:上記の/静的なディレクトリなどのクラスパスにある:以下。

  • あなたは、このような/ mystatic / **クラスパスにマッピングされたとして、追加したい場合は:/ / mystatic、あなたは次のように書き換えられ、コンフィギュレーションクラスがWebMvcConfigurerAdapterを継承することができます。

      @Override
      public void addResourceHandlers(ResourceHandlerRegistry registry) {
          registry.addResourceHandler("/mystatic/**")
                  .addResourceLocations("classpath:/mystatic/");
      }
    复制代码
  • このアプローチは、**クラスパスにマッピングされた/ / mystaticに基づいてデフォルトに増加します:/ / mystatic、デフォルトのモードには影響しませんが、同時に使用することができます。
  • これは例えば、** /のデフォルトの設定に影響を与えます静的リソースを使用spring.mvc.staticパスパターン= / **#路パターン:.propertiesファイルの形で書かれた簡単にするために、ここで、また、静的リソースマッピングの設定オプションがあります。後の変更/静的/ **、唯一の(変更が/js/sample.jsである前に)そのような要求を/static/js/sample.jsとしてマッピングします。ほとんどはコンマで区切って複数設定することができますとは違って、この構成は、一つの値を書き込むことができます。

注意

  • 例えば、ディレクトリ構造は次のよう:

      └─resources
          │  application.yml
          │
          ├─static
          │  ├─css
          │  │      index.css
          │  │
          │  └─js
          │          index.js
          │
          └─templates
                  index.ftl
    复制代码
  • どのようにそれ以上のindex.ftlで静的リソースを参照するには?

  • 以下の文言:

  • 注:デフォルトの設定/ ** /静的にマッピングされた(または/公共/リソース、/ META-INF /リソース)

  • ときに要求/css/index.css、Spring MVCのは、静的な/ディレクトリ/で見つけることができます。

  • 設定が/static/css/index.cssであれば、いくつかのディレクトリは、上記の構成/静的なディレクトリを、次のされていないので、リソースファイルを見つけることができません!

  • だから、静的リソースの位置を書き込み、(静的/、/公共/、/リソース/、/ META-INF /リソース/ /など)ディレクトリマップの名前を入れないでください!

使用WebJars

  • WebJars:www.webjars.org/

  • たとえば、jqueryのために、依存関係を追加します。

    org.webjars jqueryの1.11.3
  • 次のようにして、その後、使用することができます。

  • あなただけのように使用されている場合、我々はHREF、奇妙なトラブルの手動修正バージョンを切り替えるには持っているとき、そして、私たちは次のように解決することができ、そのバージョンのhrefの1.11.3に気づくことがあります。

  • 最初のpom.xmlに依存関係を追加します。

    org.webjars webjarsロケータ
  • WebJarControllerを追加します。

      @Controller
      public class WebJarController {
          private final WebJarAssetLocator assetLocator = new WebJarAssetLocator();
      
          @ResponseBody
          @RequestMapping("/webjarslocator/{webjar}/**")
          public ResponseEntity locateWebjarAsset(@PathVariable String webjar, HttpServletRequest request) {
              try {
                  String mvcPrefix = "/webjarslocator/" + webjar + "/";
                  String mvcPath = 
      (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
                  String fullPath = 
      assetLocator.getFullPath(webjar, mvcPath.substring(mvcPrefix.length()));
                  return new ResponseEntity(new ClassPathResource(fullPath), HttpStatus.OK);
              } catch (Exception e) {
                  return new ResponseEntity<>(HttpStatus.NOT_FOUND);
              }
          }
      }
    复制代码
  • :その後、次のように使用する場合

  • 注意:バージョン番号を書きますが、URLを書くときに注意を払う、ちょうど他のあまりに基づいて、元のURLにバージョン番号を削除する必要はありません!

静的バージョンのリソース管理

  • Spring MVCのは、静的リソースのマッピングの機能バージョンを提供します。

  • 目的:ブラウザのキャッシュ、ユーザーのローカル静的リソースまたは古いリソースは、このような状況に起因する問題を防ぐために、我々は手動で要求URLの時にバージョン番号または他の手段を追加する可能性があるため、我々は、リソースの内容を変更します。

  • 次のようなバージョン番号

  • Spring MVCのは、機能が簡単に私たちは似たような問題を解決することができます提供します。

  • Spring MVCのは、2つのソリューションがあります。

  • 注意:FreeMarkerの道のために、以下のテンプレート設定を、他の構成は、参照することができます。

リソース名-MD5方法

<link rel="stylesheet" type="text/css" href="/css/index-2b371326aa93ce4b611853a309b69b29.css">
复制代码
  • 春は自動的にリソースのMD5を読み、[リソースの内容の変更、ファイル名の変更は、ローカルリソースを更新しますのでとき、index.cssの裏に名前を追加します。
  • 構成:
  • 次の構成でApplication.properties:

  • spring.resources.chain.strategy.content.enabled =真spring.resources.chain.strategy.content.paths = / **

  • このような構成の後、すべての/ *静的リソース要求は、上記の例のように見えるように処理されます。

  • ここでは終わらない、我々は、URLも特別扱いされたリソースを記述します。

  • まず、次の設定を追加します:

  • @ControllerAdviceパブリッククラスControllerConfig {@Autowired ResourceUrlProvider resourceUrlProvider。@ModelAttribute( "URLを")パブリックResourceUrlProviderのURL(){リターンthis.resourceUrlProvider。}}

  • その後、次の文言でページを書く時間:

  • 治療後のリソース名を取得するためにurls.getForLookupPath(「/ CSS / index.css」)を使用してください。

方法のバージョン番号

  • 次の構成でApplication.properties:

  • spring.resources.chain.strategy.fixed.enabled =真spring.resources.chain.strategy.fixed.paths = / JS / 、/ v1.0.0デベロッパー/ spring.resources.chain.strategy.fixed.version = v1.0.0デベロッパー

  • この構成では、特別な注意が必要で、バージョンの値がパスに配置されています。

  • 次のようにページ書き込みでは、言葉で表現:

    • これはまだurls.getForLookupPathを使用していること、URLの構成は、上記の方法を参照してください注意してください。実際のページ要求では、それはのように表示されます。

    • ここでは、アドレス/v1.0.0/js/index.jsを見ることができます。

    静的バージョンリソース管理プロセス

    • まずurls.getForLookupPath Freemarkerのテンプレートメソッドが/v1.0.0/js/index.jsまたは/css/index-2b371326aa93ce4b611853a309b69b29.cssを返し呼び出します。
    • この時点でページのコンテンツは、処理後のリソースアドレスです。このブラウザ後に要求を開始します。
    • 彼はここに個別に述べています。
    最初の方法MD5
    • 要求/css/index-2b371326aa93ce4b611853a309b69b29.cssは、スプリングMVC URLを含むしようとするので、我々は、= / **構成パスをMD5 - 、含まれている場合背中のこの部分を削除し、(/例えば、/静的)ディレクトリにマップされますあなたはリターンを見つけることができれば、/css/index.cssファイルを見つけます。
    道の第二のバージョン
    • リクエスト/v1.0.0/js/index.js。
    • 我々パスが/v1.0.0に構成されていない場合は、上記アドレス要求は、道のバージョンでは処理されませんので、上記のリソースを見つけることができません。
    • あなたは/v1.0.0,Springが/js/index.jsため/v1.0.0の外観を削除します設定した場合、最終的には以下/静的/にあります。

    要約:

    新しいプログラム猿として、デイモンはあなたと一緒に進行したいと考えています。他の場所に記載の記事や不備は、私たちは一緒に進歩の多くを高めるために願っています。

    デイモンは、あなたと共有するためにいくつかの有用な助言、知識や新しいツールを探求していきます、ありがとうございました!

    過去の記事はgithubのにアップロードされ、スターパートナーは、下の缶にはほとんど関心があります:github.com/xxxyyh/Fronは...

おすすめ

転載: juejin.im/post/5d6688006fb9a06af7124683