古いSpringMVCプロジェクトはありますか?スプリングブートプロジェクトに変換する場合は、この記事を読んでください。
説明します
プロジェクトがMavenプロジェクトでさえない場合は、自分でMavenプロジェクトに変換して、このチュートリアルに従ってください。
このチュートリアルは、Spring+SpringMVC+MyBatis+ShiroのMavenプロジェクトに適しています。
1. POMファイルの依存関係を変更します
前のスプリング依存関係を削除し、スプリングブート依存関係を追加します
<parent> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid> <バージョン> 1.5.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.parent> deplency> <groupid> org.springframework.boot </dependency> <dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-test </artifactid> <scope> test </scope> </dependency> <redency> org.springframework.boot <これは、組み込みのTomcatの展開を削除するためです - > <除外> <explusion> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-tomcat </artifactid> <artifactid> spring-boot-starter-tomcat </artifactid> <! - <scope> compile </scope> - > </dependency> <dependency> <groupid> org.mybatis.spring.boot </groupId> <artifactid> mybatis-spring-boot-startertertertertertertertertertertertertertid> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-devtools </artifactid> <オプション> true </optional> </dependency> <! - support @configurationproperties annotation-> <redencework> org.springframework.boot </groupid> <artifactid> spring-boot-configuration-processor </artifactid> <optional> true </optional> </dependency> <dependency> <dependency> <expendency> <groupid> org.apache.tomcat.embed> tomcat-embed-jasper </artifactid>
スプリングブートビルドプラグインを追加します
<プラグイン> <プラグイン><groupId> org.apache.maven.plugins </groupid> <artifactid> maven-compiler-plugin </artifactid> <configuration> <source> 1.7 </source> 1.7 </target> </configuration> </plugin> <artifactid> spring-boot-maven-plugin </artifactid> <バージョン> 1.5.9.release </version> <execution> <execution> <goal> <goal> repackage> goal> </goal> </execution> </executions> </plugin> </glubins>
2.アプリケーションの起動ファイルを追加します
アプリケーションがコントローラー、サービス、およびDAOの前のレイヤーパッケージにある場合、@componentscanを構成する必要はないことに注意してください。
それ以外の場合は、スキャンするパッケージを指定する必要があります。
@springbootapplication // @componentscan({"com.cms.controller"、 "com.cms.service"、 "com.cms.dao"})Public Class Applicationはspringbootservletinitializer {@override Protected SpringApplicationBuilder Configure(Spring -ApplicationBuillderアプリケーション){ } public static void main(string [] args)exception {springApplication.run(application.class、args); }}3.スプリングブート構成ファイルを追加します
リソースの下にApplication.Propertiesファイルを追加します
基本的な構成#DEFAULT PREFIX SERVER.CONTEXTPATH =/#環境Spring.Profiles.active = local#JSP Configuration spring.mvc.view.prefix =/web-inf/jsp/spring.mvc.view.suffix = .jsp#log Configurationファイルlogging.config = class-cms.xmlspath = gms.xms.xml logging.path =/users/mac/work-tommy/cms-springboot/logs/#data source spring.datasource.name = admindatasourcespring.datasource.driverclassname = com.mysql.jdbc.driverspring.datasource.url = JDBC:mysql:// localhost:3306/mycms?useunicode = true&autoreconnect = true&charatereConding = utf-8spring.datasource.username = rootspring.datasource.password = 123456
4。@ConFigurationを使用して構成を注入します
MyBatis構成を挿入して、ページングプラグインを個別に選択してください
@configuration @mapperscan(basepackages = "com.kuwo.dao"、sqlsessiontemplateref = "adminsqlsessiontemplate")public class admindatasourceconfig {@bean(name = "admindatasource")@configurationporties(prefix = "spring.datasource") admindataSource(){return dataSourceBuilder.create()。build(); } @bean(name = "adminsqlsessionfactory")@primary public sqlsessionfactory adminsqlsessionfactory( @qualifier( "admindatasource")datasource datasource)スロー例外{sqlsessionfactorybean bean = new sqlsessionfactorybean(); Bean.SetDataSource(DataSource); // Pagination Plugin // PageHelper PageHelper = new PageHelper(); PagePlugin PagePlugin = new PagePlugin(); // Properties Props = new Properties(); // Props.setProperty( "Reasureable"、 "True"); // props.setProperty( "supportmethodsarguments"、 "true"); // propssporty( "Returnpageinfo"、 "); "count = countsql"); // pagehelper.setProperties(props); //プラグインBean.setPlugins(new Interceptor [] {PagePlugin})を追加します。 // mybatis構成ファイルbean.setConfiglocation(new defaultreSourceloader()。getResource( "classpath:mybatis/mybatis-config.xml")); // mybatisマッピングファイルBean.setMapperLocations(new PathMatchingResourcePatterNresolver()。getResources( "classpath:mybatis/system/*。xml"))を追加します。 return bean.getObject(); } @bean(name = "admintransactionmanager")@primary public datasourcetransactionmanager admintransactionmanager( @qualifier( "admindatasource")datasource datasource){return emew datasourcetransactionmanager(datasource); } @bean(name = "adminsqlsessiontemplate")@primary public sqlsessionTemplate adminsqlsessionTemplate( @qualifier( "adminsqlsessionFactory")sqlsessionFactory sqlsessionFactory)スロー例外}}インターセプター構成を追加し、addInterceptorの順序に注意してください、それを台無しにしないでください
@configurationPublic class InterceptorConfigurationextends webmvcconfigureradapter {@override public void addinterceptors(interceptorregistry registry){registry.addinterceptor(new loginhandlerinterceptor()); }}Shiro Configurationファイルを追加します
注:Redisをセッションキャッシュとして使用しましたが、Shiroとの統合に問題が発見されました。ユーザーオブジェクトが格納された後、シロから取得した後にタイプ変換することはできないため、セッションキャッシュとして一時的にRedisをあきらめました。
@configurationPublic class Shiroconfiguration {@value( "$ {spring.redis.host}")private string host; @value( "$ {spring.redis.port}")private int port; @value( "$ {spring.redis.timeout}")private int timeout; @bean public static lifecyclebeanpostprocessor getlifecybeanpostprocessor(){return new lifecybeanpostprocessor(); } /*** shirofilterfactorybeanは、リソースファイルのインターセプトを処理します。 *注:単一のshirofilterfactorybean構成がisまたはエラーが報告されます。 * shirofilterfactorybeanを初期化する場合、セキュリティマネージャー *フィルターチェーン定義の説明1。URLは複数のフィルターを構成することができます。 shirofilterfactorybean shirofilter(securitymanager securitymanager){system.out.println( "shiroconfiguration.shirfilter()"); shirofilterfactorybean shirofilterfactorybean = new shirofilterfactorybean(); // SecurityManager shirofilterfactorybean.setsuccessurl( "/userspage"); //デフォルトを設定しない場合、Webプロジェクトのルートディレクトリの「/login.jsp」ページが自動的に検索されます。 //デフォルトを設定しない場合、Webプロジェクトのルートディレクトリの「/login.jsp」ページが自動的に検索されます。 //ログインが成功した後にリンクされるリンクshirofilterfactorybean.setsuccessurl( "/userspage"); //不正なインターフェイス。 shirofilterfactorybean.setunauthorizedurl( "/403"); //インターセプター。 map <string、string> filterchaindefinitionmap = new linkedhashmap <>(); // exitフィルターを構成する特定のexitコードShiroは、filterchaindefinitionmap.put( "/logout"、 "logout")を実装しました。 FilterChainDefinitionMap.put( "/login_tologin"、 "anon"); FilterChainDefinitionMap.put( "/login_login"、 "anon"); FilterChainDefinitionMap.put( "/static/login/**"、 "anon"); FilterChainDefinitionMap.put( "/static/js/**"、 "anon"); FilterChainDefinitionMap.put( "/uploadFiles/uploadImgs/**"、 "anon"); FilterChainDefinitionMap.put( "/code.do"、 "anon"); FilterChainDefinitionMap.put( "/font-awesome/**"、 "anon"); // <! - 上から下に実行されるフィルターチェーンの定義、通常は下部に /** - >:これはピットです。注意しなければ、コードは機能しません。 // <! - authc:アクセスする前にすべてのURLを認証する必要があります。 ANON:すべてのURLに匿名でアクセスできます - > FilterChainDefinitionMap.put( "/**"、 "authc"); shirofilterfactorybean.setFilterChainDefinitionMap(FilterChainDefinitionMap); shirofilterfactorybeanを返します。 } @bean public securitymanager securitymanager(){defaultwebsecuritymanager securitymanager = new defaultwebsecuritymanager(); // Realmを設定します。 securitymanager.setrealm(myshirorealm()); //カスタムキャッシュの実装はredisを使用します//カスタムセッション管理は、Redis SecurityManager.SetsessionManager(SessionManager())を使用します。 Return SecurityManager; } @bean public shirorealm myshirorealm(){shirorealm myshirorealm = new shirorealm(); // myshirorealm.setcredentialSmatcher(hashedcredentialSmatcher()); myshirorealmを返します。 }} /*** shiro aopアノテーションサポートを有効にします。 *プロキシメソッドを使用します。したがって、コードサポートを有効にする必要があります。 * @param securitymanager * @return */ @bean public autherizationAttributesourceadvisor authorizationAttributesceadvisor(securitymanager securitymanager){authisizationAttributesourceadvisor authorizationAttributesceadvisor = new AuthorizationAttributesourCeadVisor(); authisizationAttributesourceadvisor.setsecuritymanager(securitymanager); authorizationAttributesourceadvisorを返します。 } / ** * Shiro Redismanagerの構成 * Shiro-Redis Open Source Plugin * @return * / public Redismanager Redismanager(){Redismanager Redismanager = new Redismanager(); redismanager.sethost(host); redismanager.setport(ポート); redismanager.setexpire(1800); redismanager.settimeout(タイムアウト); // redismanager.setPassWord(パスワード); Redismanagerを返します。 } / *** CacheManager Cache Redis実装* Shiro-Redis Open Source Plugin* @return* / public RediscacheManager CacheManager(){RediscaceManager RediscacheManager = new RediscaceMemanager(); RediscaceMemanager.setRedismanager(redismanager()); RediscacheManagerを返します。 } / *** redissessiondao shiro sessiondao layerの実装はRedisを介しています* Shiro-Redis Open Source Plugin* / @Bean Public RedissessionDao RedissessionDao(){RedissessionDao RedissessionDao = new RedissessionDao(); RedissessionDao.setRedismanager(redismanager()); RETURN REDISSESSIONDAO; } @bean public defaultwebsessmanager sessionmanager(){defaultwebsessionmanager sessionmanager = new defaultwebsessionmanager(); // sessionmanager.setsessiondao(redissessiondao()); Return SessionManager; }}要約します
プロジェクトをスプリングブートに変換し、さまざまな情報をチェックする1日を費やしました。この記事があなたを助けることを願っています。また、誰もがwulin.comをもっとサポートすることを願っています。