Gibt es ein altes SpringMVC -Projekt? Wenn Sie es in ein Springboot -Projekt umwandeln möchten, lesen Sie diesen Artikel einfach.
veranschaulichen
Wenn Ihr Projekt nicht einmal ein Maven -Projekt ist, konvertieren Sie es bitte selbst in ein Maven -Projekt und folgen Sie diesem Tutorial.
Dieses Tutorial ist für das Maven -Projekt von Spring+SpringMVC+MyBatis+Shiro geeignet.
1. Ändern Sie die Abhängigkeit von POM -Dateien
Löschen Sie die vorherige Federabhängigkeit und fügen Sie Springboot -Abhängigkeit hinzu
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version></parent><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </abhängig> <De vorstellen> <gruppe> org.springFramework Dies dient dazu, die integrierte Tomcat-Bereitstellung zu entfernen-> <ausschlüsse> <xclusion> <gruppe> org.springFramework <artifactId>spring-boot-starter-tomcat</artifactId> <!--<scope>compile</scope>--> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <gruppeID> org.springframework.boot </Groupid> <artifactId> Spring-Boot-Devtools </artifactId> <optional> true </optional> </abhängig> <!-Support @ConfigurationProperties Annotation-> <Diefency> <Gruppe> org.springFramework.boot </Groupid> <artifactid> Spring-Boot-Konfigurationsprozessor </artifactId> <option> true </optional> </abhängig> <depecled> <Groupid> org.apache.tomcat.embed </Groupid> <artifactid> tomcat-embed-jasper </artifactid> </abhängig> </abhängig> <///////abhängig
Fügen Sie Springboot Build Plugin hinzu
<PLUGINS> <PLUGIN> <GROPPE> org.apache.maven.plugins </GroupId> <ArtifactId> Maven-Compiler-Plugin </artifactId> <Configuration> <quelle> 1.7 </socus> <target> 1.7 </target> </configuration> </Plugin> </gruppin> <gruppin> <gruppen org. <artifactId> Spring-Boot-Maven-Plugin </artifactId> <version> 1.5.9.Release </Version> <Executions> <ausführungen> <gross
2. Fügen Sie die Anwendungsstartdatei hinzu
Beachten Sie, dass bei der Anwendung im vorherigen Layer -Paket von Controller, Service und DAO nicht @Componentscan konfiguriert werden muss.
Andernfalls müssen Sie angeben, welches Paket Sie scannen sollen.
@SpringbootApplication // @componentscan ({"com.cms.controller", "com.cms.service", "com.cms.dao"}) public class applicationends SpringbootServletInitializer {@Override Protected SpringApplicationBuilder -Konfiguration (springApplication) {{{return Application. } public static void main (String [] args) löst eine Ausnahme aus {SpringApplication.run (application.class, args); }}3. Fügen Sie Springboot -Konfigurationsdatei hinzu
Fügen Sie application.Properties -Datei unter Ressourcen hinzu
Fügen Sie die grundlegende Konfiguration #default prefix server hinzu. logging.path =/user/mac/work-tommy/cms-spingboot/logs/#Data Source Spring.datasource.Name = admindaSourcesspring.datasource.driverClassName = com.mysql.jdbc.driverspring.datasource.url = JDBC: MySQL: // localhost: 3306/mycms? useUnicode = true & autoreconnect = true & charakteristisch
4. Konfiguration mit @Configuration injizieren
Injizieren Sie die MyBatis -Konfiguration, bitte wählen Sie das Paging -Plugin unabhängig
@Configuration @mapperscan (basepackages = "com.kuwo.dao", sqlSessionTemplateRef = "adminsQlSessionTemplate") public class admindaNindatasourceConfig {@bean (name = "admindatasource") @ConfigurationProperties (Prefix = "). admindataSource () {return DataSourcebuilder.create (). Build (); } @Bean (name = "adminsqlSessionFactory") @Primary public SQLSessionFactory adminsQlSessionFactory (@Qualifier ("admindataSource") DataSource dataSource) Ausnahme {SQLSessionFactoryBean Bean = new sqlSSourceFactoryBean (); Bean.setDataSource (DataSource); // Pagination Plugin // PageHelper PageHelper = new PageHelper (); PagePlugin pagePlugin = new pagePlugin (); // Eigenschaften props = neue Eigenschaften (); // props.setProperty ("vernünftig", "true"); // props.setProperty ("SupportMethodsargumente", "true"); // props.setProperty ("returnpageInfo"); "count = countSQL"); // pageHelper.setProperties (Requisiten); // Plugin bean.setPlugins hinzufügen (neuer Interceptor [] {pagePlugin}); // MyBatis-Konfigurationsdatei bean.setConfigLocation (neuer Defaultresourceloader (). GetResource ("ClassPath: mybatis/mybatis-config.xml")); // Fügen Sie die MyBatis -Mapping -Datei hinzu bean.setMapperLocations (neuer PathMatchingResourcePenNResolver (). return bean.getObject (); } @Bean (name = "adminTransactionManager") @Primary public DataSourCetRansActionManager adminTransactionManager (@Qualifier ("admindaTaSource") DataSource -Datenource) {Neue DataSourcetRansactionManager (DataSource); } @Bean (name = "adminsQlSessionTemplate") @primary public sqlSessionTemplate adminsQlSessionTemplate (@Qualifier ("adminsQlSessionFactory") }}Fügen Sie die Interceptor -Konfiguration hinzu, achten Sie auf die Reihenfolge von AddInterceptor, machen Sie sie nicht durcheinander
@ConfigurationPublic Class InterceptorConfigurationEttends webmvcconFigurerAdapter {@Override public void addInterceptors (InterceptorRegistry -Registrierung) {Registry.AddInterceptor (neuer LoginHandlerInterceTor ()); }}Shiro -Konfigurationsdatei hinzufügen
Hinweis: Ich habe Redis als Sitzungscache verwendet, aber ein Problem mit der Integration mit Shiro. Nachdem das Benutzerobjekt gespeichert wurde, kann es nach dem Erhalten von Shiro nicht vom Typ Typ konvertiert werden, sodass ich Redis als Sitzungscache vorübergehend aufgegeben habe.
@ConfigurationPublic Class Shiroconfiguration {@Value ("$ {Spring.redis.host}") privater String -Host; @Value ("$ {spring.redis.port}") privater int port; @Value ("$ {spring.redis.timeout}") Private int timeout; @Bean Public Static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor () {Return New LifecycleBeanPostProcessor (); } /*** shirofilterFactoryBean behandelt die Abfangen von Ressourcendateien. * Hinweis: Eine einzelne ShirofilterFactoryBean -Konfiguration ist oder ein Fehler wird angegeben, da bei * Initialisierung der ShirofilterFactoryBean erforderlich ist zu injizieren: SecurityManager * Filterkettendefinition Beschreibung 1. Eine URL kann mehrere Filter konfigurieren, getrennt durch Kommas. Wenn mehrere Filter gesetzt werden, werden alle Verifizierungen. ShirofilterfactoryBean shirofilter (SecurityManager SecurityManager) {System.out.println ("Shiroconfiguration.shirfilter ()"); ShirofilterFactoryBean shirofilterFactoryBean = New ShirofilterFactoryBean (); // SecurityManager ShirofilterFactoryBean.SetsuSccessurl ("/userSpage"); // Wenn Sie die Standardeinstellung nicht festlegen, wird die Seite "/login.jsp" im Stammverzeichnis des Webprojekts automatisch durchsucht. // Wenn Sie die Standardeinstellung nicht festlegen, wird die Seite "/login.jsp" im Stammverzeichnis des Webprojekts automatisch durchsucht. // Der Link, der nach dem Anmeldung umgeleitet wird, ist erfolgreich ShirofilterFactoryBean.setsuSuSuSuCcessurl ("/userSpage"); // nicht autorisierte Schnittstelle; shirofilterFactoryBean.Setunauthorizedurl ("/403"); // Interceptor. Karte <String, String> filterchainDefinitionMap = new LinkedHashMap <> (); // Konfigurieren Sie den Exit -Filter, der spezifische Exit -Code Shiro hat filterchaineDefinitionMap.put ("/logout", "logout") implementiert. filterchainedefinitionmap.put ("/login_tologin", "anon"); filterchainedefinitionmap.put ("/login_login", "anon"); filterchainedefinitionmap.put ("/static/login/**", "anon"); filterchainedefinitionmap.put ("/static/js/**", "anon"); filterchainedefinitionmap.put ("/uploadFiles/uploadimgs/**", "anon"); filterchainedefinitionmap.put ("/code.do", "anon"); filterchainedefinitionmap.put ("/font-awesome/**", "anon"); // <!-Filterkettendefinition, ausgeführt von oben nach unten, im Allgemeinen unten /** unten->: Dies ist eine Grube. Wenn Sie nicht vorsichtig sind, funktioniert der Code nicht. // <!- Authc: Alle URLs müssen vor dem Zugriff authentifiziert werden. ANON: Alle URLs können anonym zugegriffen werden-> filterchaindefinitionMap.put ("/**", "authc"); shirofilterFactoryBean.SetFilterChaindeFinitionMap (filterchainedefinitionMap); Return ShirofilterFactoryBean; } @Bean public SecurityManager SecurityManager () {defaultWebSecurityManager SecurityManager = new defaultWebSecurityManager (); // Reich setzen. SecurityManager.SetRealm (myshirorealm ()); // Benutzerdefinierte Cache -Implementierung verwendet Redis //SecurityManager.setCacheManager (CacheManager ()); // benutzerdefinierte Sitzungsverwaltung verwendet Redis SecurityManager.SetSessionManager (SessionManager ()); Sicherheitsmanager zurückgeben; } @Bean public Shirorealm myshirorealm () {shirorealm myshirorealm = new Shirorealm (); // MyShirorealm.setcredentialsMatcher (HashedcredentialsMatcher ()); Myshirorealm zurückgeben; }} /*** Aktivieren Sie Shiro AOP -Annotationsunterstützung. * Verwenden Sie die Proxy -Methode; Daher muss der Code -Support aktiviert sein. * @param SecurityManager * @Return */ @Bean Public AuthorizationAttributeSourceAwvisor AutorizationAttributesourceadvisor (SecurityManager SecurityManager) {AuthorizationAttributeSourceadvisor AutorizationAttributesourceAwvisor = new AuthorizationAttributeSourCeadvisor (); AuthorizationAttributesourceadvisor.SetSecurityManager (SecurityManager); Return AuthorizationAttributesourceadvisor; } / ** * SHIRO RedisManager Konfigurieren * verwenden Shiro-Redis Open Source-Plugin * @return * / public RedisManager redisManager () {redismanager redismanager = new redismanager (); RedisManager.Sethost (Host); RedisManager.Setport (Port); RedisManager.SetExpire (1800); RedisManager.Settimeout (Timeout); // RedisManager.SetPassword (Passwort); Return RedisManager; } / *** CacheManager Cache Redis-Implementierung* verwendet Shiro-Redis Open Source-Plugin* @return* / public rediscachemanager cacheManager () {rediscaCheManager rediscacheManager = new rediscachemanager (); rediscaCheManager.setReDisManager (redismanager ()); Return RediscaCheManager; } / *** Die Implementierung von RedissessionDao Shiro SessionDAO-Schicht erfolgt über Redis* verwendet Shiro-Redis Open Source-Plugin* / @Bean Public RedissessionDao reverSessionDao () {redissessiondao resessiondao = new redissessiondao (); redissessiondao.setRedisManager (redismanager ()); Return Redissessiondao; } @Bean public defaultWebSessionManager SessionManager () {DefaultWebSessionManager SessionManager = new DefaultWebSessionManager (); // SessionManager.SetSessionDao (redissessionDao ()); Rückkehr SessionManager; }}Zusammenfassen
Ich verbrachte einen Tag damit, das Projekt in Springboot umzuwandeln und verschiedene Informationen zu überprüfen. Ich hoffe, dieser Artikel kann Ihnen helfen. Ich hoffe auch, dass jeder wulin.com mehr unterstützen wird.