هل يوجد أي مشروع قديم من SpringMVC؟ إذا كنت ترغب في تحويله إلى مشروع Springboot ، فما عليك سوى قراءة هذه المقالة.
يوضح
إذا لم يكن مشروعك حتى مشروع Maven ، فيرجى تحويله إلى مشروع Maven بنفسك واتباع هذا البرنامج التعليمي.
هذا البرنامج التعليمي مناسب لمشروع Maven of Spring+SpringMVC+MyBatis+Shiro.
1. تعديل تبعية ملف POM
حذف التبعية في الربيع السابقة وأضف تبعية سبرينج بوت
<Arnal> <roupl> org.springframework.boot </groupId> <intifactid> spring-boot-starter-parent </shintifactid> <الإصدار> 1.5.9 </reperency> <redency> <rougiD> org.springframework.boot </rougiD> <StifactId> اختبار زنبرك النابض-starter-starter </artifactid> <scope> اختبار </scope> </repondency> <sperency> <roupaCid> org.springframework.boot </rocopid> <!-هذا لإزالة نشر tomcat المدمج-> <svisplusions> <Section> <roupiD> org.springframework.boot </rougeid> <shintifactid> spring-boot-starter-tomcat </stifactid> </exsistions> </emperency> <! <roupl> org.springframework.boot </groupId> <StifactId> Spring-boot-starter-tomcat </artifactid> <!-<scope> ترجمة </scope>-> </rependency> <sperence> <roupiD> org.mybatis.spring.boot </rocopid> <StifactId> mybatis-spring-boot-starter </artifactId> <الإصدار> 1.3.0 </version> </repreadency> <reperency> <roupled> org.springframework.boo </groupid> </attifactid> spring-boot-boot-devtools </artifactid> التعليق التوضيحي-> <Rependency> <roupiD> org.springframework.boot </rougiD> <Stifactid> spring-boot-configuration-processor </stifactid> <centional> true </peripensal> </reperency> <StifactId> tomcat-embed-jasper </artifactid> </reperency> </repreadencies>
أضف مكونًا إضافيًا للبناء
<uccedins> <ultion> <roupiD> org.apache.maven.plugins </groupId> <StifactId> maven-compiler-plugin </suntifactid> <configuration> <source> 1.7 </ourcepring> </target> 1.7 </target> <StifactId> Spring-boot-maven-plugin </stifactid> <الإصدار> 1.5.9
2. إضافة ملف بدء تشغيل التطبيق
لاحظ أنه إذا كان التطبيق في حزمة الطبقة السابقة من وحدة التحكم والخدمة و DAO ، فلا داعي لتكوين componentscan ،
خلاف ذلك ، تحتاج إلى تحديد الحزمة التي سيتم مسحها.
springbootapplication // @componentscan ({"com.cms.controller" ، "com.cms.service" ، "com.cms.dao"}) application application application applictendences springBootServleTializializializializial {{Application application. } public static void main (string [] args) يلقي الاستثناء {springapplication.run (application.class ، args) ؛ }}3. أضف ملف تكوين Springboot
أضف ملف Application.Properties ضمن الموارد
إضافة التكوين الأساسي #Default prefix server.contextpath =/#حدد البيئة spring.profiles.active = محلي#jsp التكوين spring.mvc.view.prefix =/web-inf/jsp/spring.mvc.view.suffix = .jsp#log configuration file logging.path =/users/mac/work-tomy/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 & maracterencoding = utf-8spring.datasource.username = rootspring.datasource.password = 123456
4. حقن التكوين باستخدام التكوين
حقن تكوين MyBatis ، يرجى تحديد المكون الإضافي للترحيل بشكل مستقل
@configuration @mapperscan (basePackages = "com.kuwo.dao" ، sqlsessionTemplateref = "AmphinsqlSessionTemplate") من الدرجة العامة AdmindataSourceConfig admindatasource () {return datasourceBuilder.create (). build () ؛ } bean (name = "adminsqlSessionFactory") primary public sqlsessionfactory adminsqlsessionfactory (QAlifier ("admindatasource) dataSource dataSource) DataSource) استثناء Bean.setDataSource (DataSource) ؛ // pagination plugin // pagehelper pagehelper = new pagehelper () ؛ pageplugin pageplugin = new pageplugin () ؛ // properties props = new properties () ؛ // props.setProperty ("alcated" ، "true") ؛ // props.setProperty ( "count = countsql") ؛ // pagehelper.setProperties (الدعائم) ؛ // إضافة مكون إضافي bean.setPlugins (اعتراض جديد [] {pagePlugin}) ؛ // إضافة mybatis configuration file bean.setConfigLocation (defaultresourceloader () // أضف ملف mybatis file bean.setMapperLocations (New PathMatchingResourceTornResolver (). getResources ("classpath: mybatis/system/*. return Bean.getObject () ؛ } bean (name = "admintransactionManager") primary public dataSourCetransActionManager admintransActionManager (Qalifier ("admindatasource) dataSource dataSource) {return dataSourCeTransActionManager (dataSurce) ؛ } bean (name = "amersinsqlsessionTemplate") sqlsessiontessiontemplate public sqlsessionTemplate AdminsqlSessionTemplate (QAlifier ("adminsqlsessionfactory") sqlsessionfactory sqlsessionfactory) يلقي الاستثناء }}إضافة تكوين اعتراض ، انتبه إلى ترتيب الإضافة ، لا تعبثه
configurationpublic class interceptorConfigurationStend WebMvCConfigureRadapter {Override public void addiptors (interceptorregistry registry) {registry.adDinterceptor (new LogInHandlerNetriptor ()) ؛ }}أضف ملف تكوين Shiro
ملاحظة: لقد استخدمت Redis كذاكرة التخزين المؤقت للجلسة ، لكنني وجدت مشكلة مع التكامل مع Shiro. بعد تخزين كائن المستخدم ، لا يمكن تحويله بعد الحصول عليه من Shiro ، لذلك تخليت مؤقتًا عن Redis كذاكرة التخزين المؤقت للجلسة.
ConfigurationPublic class shiroconfiguration {value ("$ {spring.redis.host}") مضيف سلسلة خاصة ؛ value ("$ {spring.redis.port}") منفذ int الخاص ؛ value ("$ {spring.redis.timeout}") private int timeout ؛ bean public static lifecyclebeanpostprocessor getLifecycleBeanPostProcessor () {return new LifecyCleBeanPostProcessor () ؛ } /*** يتولى Shirofilterfactorybean اعتراض ملفات الموارد. * ملاحظة: يتم الإبلاغ عن تكوين shirofilterfactorybean واحد أو تم الإبلاغ عن خطأ ، لأنه عندما * تهيئة shirofilterfactorybean ، من الضروري الحقن: SecurityManager * تعريف سلسلة المرشحات الوصف 1. shirofilterfactorybean shirofilter (SecurityManager SecurityManager) {system.out.println ("shiroconfiguration.shirfilter ()") ؛ shirofilterfactorybean shirofilterfactorybean = جديد shirofilterfactorybean () ؛ // SecurityManager Shirofilterfactorybean.setsuccessurl ("/userpage") ؛ // إذا لم تقم بتعيين الافتراضي ، فسيتم البحث تلقائيًا في صفحة "/login.jsp" في الدليل الجذر لمشروع الويب ؛ // إذا لم تقم بتعيين الافتراضي ، فسيتم البحث تلقائيًا في صفحة "/login.jsp" في الدليل الجذر لمشروع الويب ؛ . // واجهة غير مصرح بها ؛ shirofilterfactorybean.setunauthorizedurl ("/403") ؛ // اعتراض. خريطة <string ، string> filterChainDefinitionMap = new LinkedHashMap <> () ؛ // تكوين مرشح الخروج ، قام رمز الخروج المحدد بتطبيق 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 () ؛ // تعيين عالم. SecurityManager.setRealM (myshirorealm ()) ؛ // يستخدم تنفيذ ذاكرة التخزين المؤقت المخصصة redis //securitymanager.setCachemanager (Cachemanager ()) ؛ // إدارة الجلسة المخصصة تستخدم Redis SecurityManager.SetSessionManager (SessionManager ()) ؛ Return SecurityManager ؛ } bean public shirorealm myshirorealm () {shirorealm myshirorealm = new shirorealm () ؛ // myshirorealm.setCredentialSmatcher (hashedcredentialsmatcher ()) ؛ إعادة myshirorealm. }} /*** تمكين دعم شرح الشيرو AOP. * استخدام طريقة الوكيل ؛ لذلك يجب تمكين دعم الكود ؛ * param securitymanager * return */ bean publicizationArtributesourCeadVisor uplistributesourceadvisor (SecurityManager SecurityManager) {elevizationArtributesourCeadVisor uplyattributesourceadvisor = efortizationattributesourceadvisor () ؛ EantaLyatTributesourCeadVisor.SetSecurityManager (SecurityManager) ؛ Return OfferizationAtRibutesourCeadVisor ؛ } / ** * تكوين Shiro Redismanager * استخدم البرنامج المساعد Open Source Shiro-Redis * return * / public Redismanager Redismanager () {Redismanager Redismanager = new redismanager () ؛ Redismanager.Sethost (مضيف) ؛ redismanager.setport (port) ؛ Redismanager.setExpire (1800) ؛ Redismanager.SettImeout (مهلة) ؛ // redismanager.setPassword (كلمة المرور) ؛ إرجاع Redismanager } / *** تطبيق Cachemanager Cache Redis* يستخدم البرنامج المساعد Open Source Shiro-REDIS* @RETURN* / Public REDISCACHEMANAGER CACHEMANAGER () {Rediscachemanager Rediscachemanager = New RedischeManager () ؛ rediscachemanager.setRedismanager (Redismanager ()) ؛ إرجاع rediscachemanager } / *** يستخدم تنفيذ طبقة RedissessionDao Shiro SessionDao من خلال Redis* Shiro-Redis Open Source Plugin* / bean public redissessiondao redissessiondao () {redissessiondao redissessiondao = new redissessiondao () ؛ redissessiondao.setredismanager (Redismanager ()) ؛ إرجاع redissessiondao ؛ } bean public defaultWebsessionManager SessionManager () {defaultWebsessionManager SessionManager = new DefaultWebsessionManager () ؛ // sessionmanager.setsessiondao (redissessiondao ()) ؛ إرجاع SessionManager ؛ }}لخص
قضيت يومًا في تحويل المشروع إلى Springboot والتحقق من المعلومات المختلفة. آمل أن يساعدك هذا المقال. آمل أيضًا أن يدعم الجميع wulin.com أكثر.