오래된 SpringMVC 프로젝트가 있습니까? SpringBoot 프로젝트로 변환하려면이 기사를 읽으십시오.
설명
프로젝트가 Maven 프로젝트가 아닌 경우 Maven 프로젝트로 직접 변환 하고이 자습서를 따르십시오.
이 튜토리얼은 Spring+SpringMVC+Mybatis+Shiro의 Maven 프로젝트에 적합합니다.
1. POM 파일 종속성을 수정하십시오
이전 스프링 종속성을 삭제하고 SpringBoot 종속성을 추가하십시오
<부모> <groupid> org.springframework.boot </groupid> <artifactid> Spring-Boot-Starter-Parent </artifactid> <bersion> 1.5.9. release> </parent> <pecientency> <groupid> org.springframework.boot </groupd> </expentid> spring-starter> <pectionency> <groupId> org.springframework.boot </groupid> <artifactid> 스프링-부트 스타터-테스트 </artifactid> <artifactid> <scope> test </scope> </spectency> <groupid> org.springframework.boot </groupid> 내장 Tomcat Deployment-> <제외> <제외> <groupid> org.springframework.boot </groupId> <artifactid> Spring-Boot-Starter-Tomcat </artifactId> </exclusions> </feencevency> <!-Tomcat Container Deployment-> groupid> org.spramframframwerk.spramework.spramewwork.sprame <artifactid> Spring-boot-starter-tomcat </artifactid> <!-<Scope> compile </scope>-> </fectionency> <pectionency> <groupid> org.mybatis.spring.spring.spring.boot </groupid> <artifactid> mybatis-spring-boot-starter </artifactid> </version> 1.0 </version> 1.0 <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-devtools </artifactid> <선택 사항> true </옵션> </dependency> <!-support @configurationProperties 주석-> <fexendency> <groupId> org.springframewort.bood> <아티 팩트> 스프링 보트-구성 프로세서 </artifactid> <solpital> true </옵션 </옵션> </dependency> <groupid> org.apache.tomcat.embed </groupId> <artifactid> tomcat-embed-jasper </artifactid> </dependencies>
SpringBoot 빌드 플러그인을 추가하십시오
<Plugins> <Plugin> <groupId.apache.maven.plugins </groupId> <artifactId> Maven-Compiler-Plugin </artifactid> <configuration> <source> 1.7 </source> <tonget> 1.7 </target> </songiguration> </plugin> <groupin> org.spramframframframewwork.spramework.spramed <Artifactid> Spring-Boot-Maven-Plugin </artifactid> <bersion> 1.5.9. release </version> <executions> <executions> <execution> <Goal> goal> Repackage </goal> </guald> </executions> </plugin> </plugins>
2. 응용 프로그램 시작 파일을 추가하십시오
응용 프로그램이 컨트롤러, 서비스 및 DAO의 이전 레이어 패키지에있는 경우 @componentscan을 구성 할 필요가 없습니다.
그렇지 않으면 스캔 할 패키지를 지정해야합니다.
@SpringBootApplication // @componentscan ({ "com.cms.controller", "com.cms.service", "com.cms.dao"}) public class applicationextends springbootservletinitializer {@override Protected SpringApplicationBuilder configure (applicationbuilder) } public static void main (string [] args)은 예외 {springApplication.run (application.class, args); }}3. SpringBoot 구성 파일을 추가하십시오
Resources에서 Application.Properties 파일을 추가하십시오
기본 구성 #default prefix server.contextpath =/#환경 지정 Spring.profiles.Active = local#jsp configuration spring.mvc.view.view.prefix =/web-inf/jsp/spring.mvc.view.suffix = .jsp#log configuration file logging.config = classml#log ml#log rat# logging.path =/user/mac/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 & charac
4. @configuration을 사용하여 구성을 주입합니다
MyBatis 구성을 주입하고 Paging Plugin을 독립적으로 선택하십시오
@configuration @mapperscan (basepackages = "com.kuwo.dao", sqlsessiontemplateref = "adminsqlsessiontemplate") public class admindatasourceconfig {@bean (name = "admindatasource") @configurationProperties (prefrimateorce = "spring.datasource") admindatasource () {return dataSourceBuilder.create (). build (); } @Bean (이름 = "AdmInsqlSessionFactory") @Primary public public sqlsessionFactory adminsqlsessionFactory (@Qualifier ( "AdminDatasource") DataSource DataSource) 예외 {sqlsession actorybean bean = new sqlsessionfactorybean (); Bean.SetDatasource (DataSource); // Pagination Plugin // PageHelper PageHelper = New PageHelper (); pageplugin pageplugin = new pageplugin (); // properties propss = new Properties (); // propss.setProperty ( "합리적", "true"); // propss.setProperty ( "supportmethodsarguments", "true"); // propls.setProperty ( "returnPageInfo", ",", ") "count = countsql"); // pageHelper.setProperties (props); // 플러그인 bean.setplugins (new interceptor [] {pageplugin}); // myBatis configuration file bean.setConfigLocation (new defaultresourceloader (). getResource ( "classpath : mybatis/mybatis-config.xml"); // myBatis 매핑 파일 Bean.setMapperLocations 추가 return bean.getObject (); } @Bean (name = "admintransactionManager") @Primary public dataSourcetRansactionManager indittransactionManager (@Qualifier ( "admindatasource") DataSource DataSource) {return new DataSourcetRansactionManager (DataSource); } @Bean (이름 = "AdmInsqlSessionTemplate") @Primary public sqlsessiontemplate adminsqlsessiontemplate (@qualifier ( "adminsqlsessionfactory") sqlsessionFactory sqlsessionTemplate) 예외 {return new sqlsessionTemplate (sqlsessionScfortory); }}인터셉터 구성 추가, AddInterceptor의 순서에주의를 기울이고 엉망으로 만들지 마십시오.
@ConfigurationPublic Class InterceptorConfigurationExtends webmvcconfigureradapter {@override public void addinterceptors (interceptorregistry registry) {registry.addinterceptor (new loginHandlerInterceptor ()); }}Shiro 구성 파일을 추가하십시오
참고 : Redis를 세션 캐시로 사용했지만 Shiro와의 통합에 문제가있었습니다. 사용자 객체가 저장된 후에는 Shiro에서 얻은 후에 유형으로 변환 할 수 없으므로 Session Cache로 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. URL은 여러 필터를 구성 할 수 있고, Commas 2에 의해 분리 된 여러 필터를 구성 할 수 있습니다. 모든 필터가 전달 될 때, 일부 필터는 매개 변수를 지정할 수 있습니다. shirofilterfactorybean shirofilter (SecurityManager SecurityManager) {System.out.println ( "shiroconfiguration.shirfilter ()"); shirofilterfactorybean shirofilterfactorybean = 새로운 shirofilterfactorybean (); // SecurityManager ShiroFilterFactoryBean.SetSuccessurl ( "/UsersPage"); // 기본값을 설정하지 않으면 웹 프로젝트의 루트 디렉토리에있는 "/login.jsp"페이지가 자동으로 검색됩니다. // 기본값을 설정하지 않으면 웹 프로젝트의 루트 디렉토리에있는 "/login.jsp"페이지가 자동으로 검색됩니다. // 로그인 후 리디렉션 할 링크는 성공적입니다. // 무단 인터페이스; shirofilterfactorybean.setunauthorizedUrl ( "/403"); // 인터셉터. Map <String, String> FilterChainDefinitionMap = New LinkedHashMap <> (); // 종료 필터를 구성하면 특정 종료 코드 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 = 새 DefaultWebSecurityManager (); // 영역을 설정합니다. SecurityManager.setRealm (myshirorealm ()); // 사용자 정의 캐시 구현을 사용합니다. // 사용자 정의 세션 관리를 사용합니다. 반품 보안 관리자; } @bean public shirorealm myshirorealm () {shirorealm myshirorealm = new shirorealm (); // myshirorealm.setcredentialsmatcher (hashedcredentialsmatcher ()); Myshirorealm을 반환합니다. }} /*** Shiro AOP Annotation 지원을 활성화합니다. * 프록시 방법을 사용하십시오. 따라서 코드 지원을 활성화해야합니다. * @param securitymanager * @return */ @bean public authorizationattributesourceadvisor authortizattributesourceadvisor (SecurityManager SecurityManager) {authortizationAttributeSourceAdvisor authorizationAttributesourceadvisor = new AuthorTibuteSourCeadvisor (); AuthorizationAttributesourceadvisor.SetSecurityManager (SecurityManager); Return AuthorizationAttributesourceadvisor; } / ** * Shiro redismanager 구성 * Shiro-Redis 오픈 소스 플러그인 * @return * / public redismanager redismanager () {redismanager redismanager = new redismanager (); redismanager.sethost (호스트); redismanager.setport (포트); redismanager.setexpire (1800); redismanager.settimeout (타임 아웃); // redismanager.setpassword (비밀번호); REDISMANAGER 리턴; } / *** Cachemanager Cache Redis 구현* Shiro-Redis 오픈 소스 플러그인* @return* / public readiscachemanager cachemanager () {readiscachemanager readiscachemanager = new readiscaceManager (); READISCACHEMANAGER.SETREDISMANAGER (redismanager ()); RECONER RECAL REASISCACHEMANAGER; } / *** redissessiondao shiro sessiondao 층의 구현은 redis를 통한 것입니다* Shiro-Redis 오픈 소스 플러그인* / @bean public redissessiondao redissessiondao () {redissessiondao redissessiondao = new RedissessionDao (); redissessiondao.setredismanager (redismanager ()); return redisssessiondao; } @Bean public defaultWebsessionManager SessionManager () {defaultWebsessionManager SessionManager = 새 DefaultWebsessionManager (); // sessionManager.SetSessionDao (redissessionDao ()); 반품 세션 관리자; }}요약
나는 프로젝트를 SpringBoot로 전환하고 다양한 정보를 확인하는 데 하루를 보냈습니다. 이 기사가 도움이되기를 바랍니다. 또한 모두가 wulin.com을 더 지원하기를 바랍니다.