มีโครงการ SpringMVC เก่า ๆ หรือไม่? หากคุณต้องการแปลงเป็นโครงการ Springboot เพียงอ่านบทความนี้
อธิบาย
หากโครงการของคุณไม่ได้เป็นโครงการ Maven โปรดแปลงเป็นโครงการ Maven ด้วยตัวเองและทำตามบทช่วยสอนนี้
บทช่วยสอนนี้เหมาะสำหรับโครงการ Maven ของ Spring+SpringMVC+MyBatis+Shiro
1. แก้ไขการพึ่งพาไฟล์ POM
ลบการพึ่งพาสปริงก่อนหน้าและเพิ่มการพึ่งพาสปริงโบท
<carent> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Parent </Artifactid> <Sersion> 1.5.9.Release </Servent> </permentency> <การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> การทดสอบสปริง-สตาร์เทสต์ </artifactid> <pope> ทดสอบ </cope> <!-นี่คือการลบการปรับใช้ tomcat ในตัว-> <exclusions> <evercusion> <scurusion> <splusion> <RoupID> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Tomcat </artifactid> <!-<Cope> คอมไพล์ </scope>-> </การพึ่งพา> <ArtIfactId> myBatis-spring-boot-starter </artifactid> <sersion> 1.3.0 </เวอร์ชัน> </การพึ่งพา> <การพึ่งพา> <roupId> org.springframework.boot </groupid> <atifactid> คำอธิบายประกอบ-> <การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactId> Spring-Boot-Configuration-Processor </artifactid> <plorial> true </onftial> </การพึ่งพา> <การพึ่งพา <ArtIfactId> Tomcat-Embed-Jasper </artifactid> </derdency> </pendencies>
เพิ่มปลั๊กอิน Build Springboot
<plugins> <plugin> <roupid> org.apache.maven.plugins </groupid> <ratifactid> maven-compiler-plugin </artifactid> <การกำหนดค่า> <source> 1.7 </source> <ArtIfactId> Spring-Boot-Maven-Plugin </artifactid> <version> 1.5.9.release </version> <การดำเนินการ> <EXECUTION> <goals> <goal> Repackage </เป้าหมาย> </เป้าหมาย> </Execution>
2. เพิ่มไฟล์เริ่มต้นแอปพลิเคชัน
โปรดทราบว่าหากแอปพลิเคชันอยู่ในแพ็คเกจเลเยอร์ก่อนหน้าของคอนโทรลเลอร์บริการและ DAO ไม่จำเป็นต้องกำหนดค่า @componentscan,
มิฉะนั้นคุณต้องระบุแพ็คเกจที่จะสแกน
@springbootapplication // @componentscan ({"com.cms.controller", "com.cms.service", "com.cms.dao"}) แอปพลิเคชันระดับสาธารณะ } โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น {springapplication.run (application.class, args); -3. เพิ่มไฟล์การกำหนดค่า Springboot
เพิ่มแอปพลิเคชันไฟล์ properties ภายใต้ทรัพยากร
เพิ่มการกำหนดค่าพื้นฐาน #Default Prefix Server.ContextPath =/#ระบุสภาพแวดล้อม Spring.profiles.active = local#JSP การกำหนดค่า Spring.mvc.view.prefix =/web-inf/jsp/spring.mvc.view.suffix = .jsp#บันทึกการกำหนดค่าไฟล์บันทึก logging.path =/ผู้ใช้/mac/work-tommy/cms-springboot/logs/#แหล่งข้อมูล Spring.datasource.name = AdmIndataSourcespring.datasource.driverclassName = com.mysql.jdbc.darcring.datasource.url = com.mysql.jdbc. JDBC: mysql: // localhost: 3306/mycms? useunicode = true & autoreconnect = true & characterencoding = utf-8spring.datasource.username = rootspring.datasource.password = 123456
4. การกำหนดค่าการฉีดโดยใช้ @configuration
ฉีดการกำหนดค่า mybatis โปรดเลือกปลั๊กอินเพจเพงอย่างอิสระ
@การกำหนดค่า @mapperscan (basepackages = "com.kuwo.dao", sqlsessionTemplateref = "AdminSqlSessionTemplate") ชั้นเรียนสาธารณะ admIndatAsource () {ส่งคืน dataSourceBuilder.create (). build (); } @Bean (name = "AdmInsQlSessionFactory") @Primary SQLSessionFactory AdminSqlSessionFactory (@qualifier ("AdmIndatAsource") DataSource DataSource) โยนข้อยกเว้น Bean.setDatasource (แหล่งข้อมูล); // ปลั๊กอิน pagination // pageHelper pageHelper = new PageHelper (); pagePlugin pagePlugin = new PagePlugin (); // properties props = properties ใหม่ (); // props.setProperty ("สมเหตุสมผล", "true"); // props.setProperty ("supportmethodsarguments", "true"); "count = countsql"); // pagehelper.setProperties (อุปกรณ์ประกอบฉาก); // เพิ่มปลั๊กอิน Bean.setPlugins (Interceptor ใหม่ [] {PagePlugin}); // เพิ่มไฟล์การกำหนดค่า mybatis bean.setConfigLocation (ใหม่ defaultresourceloader (). getResource ("classpath: mybatis/mybatis-config.xml")); // เพิ่ม mybatis mapping file bean.setMapperlocations (pathmatchingResourcePatterNresolver (). getResources ("classpath: mybatis/system/*. xml")); กลับ bean.getObject (); } @Bean (name = "adminTransactionManager") @Primary DataSourceTransactionManager AdminTransactionManager (@qualifier ("AdmIndataSource") DataSource DataSource) {ส่งคืน DataSourceTransactionManager (แหล่งข้อมูล); } @Bean (name = "AdmInsQlSessionTemplate") @Primary สาธารณะ SQLSessionTemplate AdminSqlSessionTemplate (@qualifier ("AdminSqlSessionFactory") SQLSessionFactory SQLSessionFormactory) -เพิ่มการกำหนดค่า interceptor ให้ความสนใจกับลำดับของ addInterceptor อย่ายุ่ง
@ConfigurationPublic คลาส InterceptorConfigurationExtends WebMVCCONFigurerAdapter {@Override โมฆะสาธารณะ AddInterceptors (InterceptorRegistry Registry) {registry.addinterceptor -เพิ่มไฟล์กำหนดค่า Shiro
หมายเหตุ: ฉันใช้ Redis เป็นแคชเซสชัน แต่ฉันพบปัญหาเกี่ยวกับการรวมกับชิโร่ หลังจากเก็บวัตถุผู้ใช้ไว้ไม่สามารถแปลงประเภทได้หลังจากได้รับจากชิโรดังนั้นฉันจึงยอมแพ้ Redis เป็นแคชเซสชันชั่วคราว
@ConfigurationPublic คลาส shiroconfiguration {@value ("$ {spring.redis.host}") โฮสต์สตริงส่วนตัว; @Value ("$ {Spring.redis.port}") พอร์ต int ส่วนตัว; @Value ("$ {spring.redis.timeout}") หมดเวลา int ส่วนตัว; @Bean สาธารณะคงที่ LifecycleBeanPostProcessor getLifecycleBeanPostProcessor () {ส่งคืน LifecycleBeanPostProcessor ใหม่ (); } /*** ShirofilterFactoryBean จัดการไฟล์ทรัพยากรที่สกัดกั้น * หมายเหตุ: การกำหนดค่า shirofilterfactorybean เดียวคือหรือมีการรายงานข้อผิดพลาดเพราะเมื่อ * เริ่มต้น shirofilterfactorybean จำเป็นต้องฉีด: SecurityManager * คำจำกัดความของโซ่ตัวกรอง 1. URL สามารถกำหนดค่าตัวกรองหลายตัว ShirofilterFactoryBean Shirofilter (SecurityManager SecurityManager) {System.out.println ("Shiroconfiguration.shirfilter ()"); ShirofilterFactoryBean ShirofilterFactoryBean = ใหม่ ShirofilterFactoryBean (); // SecurityManager ShirofilterFactoryBean.setsuccessurl ("/userspage"); // หากคุณไม่ได้ตั้งค่าเริ่มต้นหน้า "/login.jsp" ในไดเรกทอรีรูทของโครงการเว็บจะถูกค้นหาโดยอัตโนมัติ // หากคุณไม่ได้ตั้งค่าเริ่มต้นหน้า "/login.jsp" ในไดเรกทอรีรูทของโครงการเว็บจะถูกค้นหาโดยอัตโนมัติ // ลิงก์ที่จะเปลี่ยนเส้นทางหลังจากเข้าสู่ระบบประสบความสำเร็จ ShirofilterFactoryBean.setsuccessurl ("/UsersPage"); // อินเทอร์เฟซที่ไม่ได้รับอนุญาต; ShirofilterFactoryBean.setunauthorizedUrl ("/403"); // interceptor แผนที่ <สตริงสตริง> filterChaInDefinitionMap = ใหม่ linkedHashMap <> (); // กำหนดค่าตัวกรองออกรหัสออกเฉพาะ Shiro ได้ใช้ FilterChainDefinitionMap.put ("/logout", "logout"); FilterChainDefinitionMap.put ("/login_tologin", "anon"); FilterChainDefinitionMap.put ("/login_login", "anon"); FilterChainDefinitionMap.put ("/คงที่/เข้าสู่ระบบ/**", "anon"); FilterChainDefinitionMap.put ("/static/js/**", "anon"); FilterChainDefinitionMap.put ("/uploadfiles/uploadimgs/**", "anon"); FilterChainDefinitionMap.put ("/code.do", "anon"); FilterChainDefinitionMap.put ("/FONT-JORESOD/**", "Anon"); // <!-นิยามโซ่ตัวกรองดำเนินการจากบนลงล่างโดยทั่วไปใส่ /** ที่ด้านล่าง->: นี่คือหลุมถ้าคุณไม่ระวังรหัสจะไม่ทำงาน // <!- authc: URL ทั้งหมดจะต้องได้รับการรับรองความถูกต้องก่อนที่จะเข้าถึง; Anon: URL ทั้งหมดสามารถเข้าถึงได้โดยไม่ระบุชื่อ-> FilterChainDefinitionMap.put ("/**", "Authc"); ShirofilterFactoryBean.SetFilterChainDefinitionMap (FilterChainDefinitionMap); ส่งคืน ShirofilterFactoryBean; } @Bean Public SecurityManager SecurityManager () {DefaultWebsecurityManager SecurityManager = ใหม่ defaultWebsecurityManager (); // ตั้งค่าอาณาจักร SecurityManager.setRealm (myshiReorealm ()); // การใช้แคชที่กำหนดเองใช้ Redis //securityManager.setCacheManager (CacheManager ()); // การจัดการเซสชันที่กำหนดเองใช้ Redis SecurityManager.SetsessionManager (SessionManager ()); Return SecurityManager; } @Bean สาธารณะ Shirorealm MyShirorealm () {Shirorealm MyShiRealealm = new Shirorealm (); // myshirorealm.setCredentialSmatcher (HashedCredentialSmatcher ()); กลับ myshirorealm; }} /*** เปิดใช้งานการสนับสนุนคำอธิบายประกอบของ Shiro AOP * ใช้วิธีพร็อกซี; ดังนั้นต้องเปิดใช้งานการสนับสนุนรหัส * @Param SecurityManager * @return */ @Bean Public AuthorizationAttributesourceAdVisor AuthorizationAttributesourceAdVisor (SecurityManager SecurityManager) {AuthorizationAtTributesourceAdVisorAtizationAtTributesourceAdVisor = ใหม่ AuthorizationAttributesourceAdvisor.SetSecurityManager (SecurityManager); return AuthorizationAttributesourceadvisor; } / ** * การกำหนดค่า Shiro RedisManager * ใช้ปลั๊กอินโอเพ่นซอร์ส Shiro-Redis * @return * / Public RedisManager RedisManager () {RedisManager RedisManager = ใหม่ RedisManager (); redismanager.sethost (โฮสต์); redismanager.setport (พอร์ต); redismanager.setexpire (1800); redismanager.settimeout (หมดเวลา); // redismanager.setPassword (รหัสผ่าน); Return Redismanager; } / *** CacheManager Cache Redis การใช้งาน* ใช้ปลั๊กอินโอเพ่นซอร์ส Shiro-Redis* @return* / Public Rediscachemanager CacheManager () {REDISCACHEMANAGER REDISCACHEMANAGER = ใหม่ REDISCACHEMANAGER (); REDISCACHEMANAGER.SETREDISMANAGER (REDISMANAGER ()); ส่งคืน REDISCACHEMANAGER; } / *** การใช้เลเยอร์ redissessiondao Shiro Sessiondao คือผ่าน Redis* ใช้ปลั๊กอินโอเพ่นซอร์ส Shiro-Redis* / @bean สาธารณะ Redissessiondao REDISSESSIONDAO () {REDISSESSIONDAO REDISSESSIONDAO = New DRENISSESSIONDAO (); REDISSESSIONDAO.SETREDISMANAGER (REDISMANAGER ()); กลับ redissessiondao; } @Bean Public DefaultWebSessionAger SessionManager () {DefaultWebSessionManager SessionManager = ใหม่ defaultWebSessionAger (); // SessionManager.SetsessionDao (REDISSESSIONDAO ()); return SessionManager; -สรุป
ฉันใช้เวลาหนึ่งวันในการแปลงโครงการเป็น Springboot และตรวจสอบข้อมูลต่าง ๆ ฉันหวังว่าบทความนี้จะช่วยคุณได้ ฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น