スプリングブックで踏んだ穴をディスクに配置します.


はじめに、springbootは全体的にspringmvcとspringの結合体であり、sprigbootを構築するプロジェクトは多くの不必要な配置が少なくなりましたが、中には注意すべき点があります.本人はspringbootを配置する中で大きな穴に遭遇しました.前に配置されたssmのものがあります.このエッセイは後で確認しやすいです.
1.起動項目の出現:mybatis Field xMapper in xxxxxxxrequired a bean of type‘XMapper’that could not be found.理由:本人用のmybatis-generatorプラグインは自動的にエンティティとDAO層とXMLファイルを生成します.springbootはあなたが生成したmapper.java類をスキャンできません.解決策:方法1:直接にあなたが生成したxxMapper.java類に@Mapperラベルを追加します.方法2:プロジェクト起動apperScan(@MapperScage=「xxx.xxx.mapper」)、sql Session FactoryRef=「sql Session Factory」)は、スキャンxx.x.mapperのパッケージのすべてのmapperを表します.または@MapperScan(xx.mapper)です.
2.mapperの配置についてデータベースを呼び出す時に現れます.org.apache.ibatis.binding.BindingException:Invalid bound statement(not found)原因:プロジェクトがあなたのMapper.xmlファイルを見つけられませんでした.解決策:まず@Select、@Insert、@Update、@Deleteを使ってカスタマイズしたmapperインターフェースクラスの方法をテストします.異常がない場合、それはxxMapper.xmlファイルをスキャンする問題です.プロジェクトで自動的に生成されたappration.propertiesでこう宣言します.
mybatis.mapper-locations=classipath:com/duuhs/miaosharm/mapper/*Mapper.xml
もちろん具体的なルートは実際の状況を見て、一部の人のMapper.xmlはresourceに置いています.一部の人はjavaファイルの下に置いて、実際の状況によって変えたらいいです.
(ps:前に他のブログを見ましたが、@MapperScanの注釈とmybatis.mapper-locationsの両方が欠けていると言われています.私のところでは、このような二つの設定がなくてはいけないという状況がありません.プロジェクトの構成がまだしっかりしていないので、先に書きます.以下の他のブログのコメントを引用します.
まず@MapperScationはMapperインターフェース類をスキャンするだけで、ymlのmapper-locationsは配置xmlです.あなたの問題について言えば、ymlはあなたのxmlロード問題を解決します.両者を正しく起動するには欠かせません.
)また、targetに対応するファイルがコンパイルされているかどうかを確認する解決策があります.
3.起動項目の出現:Field xService in xController required a bean of type『xx.xxx.Service』that could not be found.原因:springbootがあなたのserviceを見つけられませんでした.解決策:@Serviceは必ず実現方法を標示してください.@Serviceは必ず表示します.三回言ってください.最初はこのラベルがプラスされていると確信していました.長い間調べてみて、@Serviceタグが誤ってインターフェースに書かれていたことを知りました.必ず実現方法の中にspringbootを書いてから対応方法を見つけられます.このピットspringなども同じです.
4.プロジェクトコントローラの転送ページが成功しませんでした.ページは常にreturnの文字列を表示しています.その理由:@RestControllerと@Controllerは間違ったところを使っています.@ResponseBody+@Controllerが一緒にいる役割に相当します.@RestControllerを使うだけでは、Controllerに戻りません.設定されたビュー解像度は無効になります.@Controllerコメントは、対応する方法で、ビュー解像度はreturnのjspを解析できます.htmlページにジャンプします.jsonなどの内容をページに返すと、@ResonseBodyソリューションを追加する必要があります.@Controllerで@RestControllerを置換します.
5.mysql-connector-javaの問題について、comp.mysql.jdbc.Driverはmysql-connector-java 5の中の、comp.mysql.cj.jdbc.Driverはmysql-connector-java 6の中のです.例えば、JDBCはMysl.mysl.mysql.mysl.mysql.mysl.mysql.mysql.mysql.jmysql.mysql.mysl.
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
JDBCはMysql 6 comp.mysql.cj.jdbc.Driverを接続しています.タイムゾーンを指定する必要があります.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Shanghai&?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
6.静的ファイルcss、jsは404を示しています.解決策:本人はappication.properiesに***spring.mvc.static-pattern=classpath:/static/**が設定されていますが、まだ失敗している場合、起動クラスではこのように変更されます.
  public class MiaoshaSystemApplication extends WebMvcConfigurationSupport {

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        //      css,js     (ps: application.properties      )
        registry.addResourceHandler("/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/static/");
        //registry.addResourceHandler("/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/templates");
        super.addResourceHandlers(registry);
    }

    public static void main(String[] args) {
        SpringApplication.run(MiaoshaSystemApplication.class, args);
    }

}
WebMvcConfigrationSupport類を継承してaddResource Handlers方法を書き換えることによって彼にそれらのデフォルトのhtmlを探させて、css、jsファイルでいいです.
7.mybatisで注釈@Selectdeを使ってリストまたは関連表を調べたところ、all elemens are null、またはデータを調べましたが、データ項目はnullで、一部のデータは間違っているという問題がありました.その後、配置にmybatis.co figratin.map-undescore-to-camel-cal-catrue=この設定に使用されています.ベルンがクエリーフィールドを受け取る時、これを設定しないと変換に失敗します.
8.プロジェクトのthymeleafのurl経路において、hrefに関しては新しいurlにジャンプしています.「/」の問題に注意してください.加えて「/」はプロジェクトのルートディレクトリから絶対パスです.代表を加えていないのは相対パスです.例えば:

ブラウザの表示は:http://localhost:8080/goods/to_detail/21を選択します.

ブラウザの表示は:http://localhost:8080/goods/goods/to_detail/21 現在はgoodsルートの中にありますので、「/」をつけないとこのレベルから計算します.
9.**問題の説明:*redisを採用してキャッシュページを行うと、元の静止画ページの文字がブラウザに表示されていた「??」と似た記号を発見し、インターフェースを介して要求されたデータが正常に表示されます.*解決策:*後に発見された@Request Mapping()に属性:produces=「text/」
10.**問題の説明:**事務の@Transactionを使用して、異常が発生したことやその他の状況が全部実行できないことを発見しました.springは自動的にロールバックしません.mysqlの中に実はロールバックすべきデータもあります.解決案:mysqlデフォルトエンジンはMyISAMです.データをサポートしないので、mysql表をデフォルトでInnoDbセキュリティ事務のエンジンに変更します.ステップ:Myを以下のように変更します.sqlのデフォルトエンジンはInnoDBのステップです.
Mysqlデフォルトは、InnoDB記憶エンジンの使用をオフにし、InnoDBをデフォルトのエンジンに設定します.
  • Mysql格納エンジンの状況を確認する:mysql>ショーengins InnoDB|YESは、このMysqlデータベースサーバがInnoDBエンジンをサポートすることを説明する.
  • InnoDBをデフォルトエンジンに設定する:プロファイルmy.iniの「mysqld」の下にdefault-storge-engine=INNODB
  • を追加する.
  • Mysqlサーバを再起動する
  • Mysqlデータベースに登録し、mysql>show engiesがInnoDB_DEFAULTがあれば、InnoDBをデフォルトエンジンに設定することが成功したということです.