亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

springmvc項(xiàng)目轉(zhuǎn)為springboot

wqj97 / 1050人閱讀

摘要:說明如果你的項(xiàng)目連項(xiàng)目都不是,請(qǐng)自行轉(zhuǎn)為項(xiàng)目,在按照本教程進(jìn)行。本教程適用于的項(xiàng)目。處理攔截資源文件問題。

說明

如果你的項(xiàng)目連maven項(xiàng)目都不是,請(qǐng)自行轉(zhuǎn)為maven項(xiàng)目,在按照本教程進(jìn)行。
本教程適用于spring+springmvc+mybatis+shiro的maven項(xiàng)目。
1.修改pom文件依賴

刪除之前的spring依賴,添加springboot依賴


        org.springframework.boot
        spring-boot-starter-parent
        1.5.9.RELEASE


       
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.boot
            spring-boot-starter-web

            
            
                
                    org.springframework.boot
                    spring-boot-starter-tomcat
                
            

        
        
        
            org.springframework.boot
            spring-boot-starter-tomcat
            
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.0
        
        
            org.springframework.boot
            spring-boot-devtools
            true
        
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.apache.tomcat.embed
            tomcat-embed-jasper
        

添加springboot構(gòu)建插件


    
        org.apache.maven.plugins
        maven-compiler-plugin
        
            1.7
            1.7
        
    
    
        org.springframework.boot
        spring-boot-maven-plugin
        1.5.9.RELEASE
        
            
                
                    repackage
                
            
        
    

添加application啟動(dòng)文件 注意,如果Application在controller,service,dao的上一層包里,無需配置 @ComponentScan,
否則,需要指明要掃描的包。

@SpringBootApplication
//@ComponentScan({"com.cms.controller","com.cms.service","com.cms.dao"})
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

添加springboot配置文件
在resources下面添加application.properties文件
添加基本配置

#默認(rèn)前綴
server.contextPath=/
# 指定環(huán)境
spring.profiles.active=local
# jsp配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
#log配置文件
logging.config=classpath:logback-cms.xml
#log路徑
logging.path=/Users/mac/work-tommy/cms-springboot/logs/
#數(shù)據(jù)源
spring.datasource.name=adminDataSource
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/mycms?useUnicode=true&autoReconnect=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = 123456

使用@Configuration注入配置
注入mybatis配置,分頁插件請(qǐng)自主選擇

@Configuration
@MapperScan(basePackages = "com.kuwo.dao",sqlSessionTemplateRef  = "adminSqlSessionTemplate")
public class AdminDataSourceConfig {

    @Bean(name = "adminDataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    @Primary
    public DataSource adminDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "adminSqlSessionFactory")
    @Primary
    public SqlSessionFactory adminSqlSessionFactory(@Qualifier("adminDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        //分頁插件
//        PageHelper pageHelper = new PageHelper();
        PagePlugin pagePlugin = new PagePlugin();
//        Properties props = new Properties();
//        props.setProperty("reasonable", "true");
//        props.setProperty("supportMethodsArguments", "true");
//        props.setProperty("returnPageInfo", "check");
//        props.setProperty("params", "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 new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "adminSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate adminSqlSessionTemplate(@Qualifier("adminSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

添加Interceptor配置,注意addInterceptor的順序,不要搞亂了

@Configuration
public class InterceptorConfiguration extends WebMvcConfigurerAdapter{
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor());
    }
}

添加shiro配置文件
注意:本來使用redis做session緩存,但是和shiro集成發(fā)現(xiàn)一個(gè)問題,user對(duì)象存儲(chǔ)以后,從shiro中獲取后,無法進(jìn)行類型轉(zhuǎn)換,所以暫時(shí)放棄了redis做session緩存。

@Configuration
public 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 getLifecycleBeanPostProcessor() {
        return new LifecycleBeanPostProcessor();
    }

    /**
     * ShiroFilterFactoryBean 處理攔截資源文件問題。
     * 注意:多帶帶一個(gè)ShiroFilterFactoryBean配置是或報(bào)錯(cuò)的,因?yàn)樵?     * 初始化ShiroFilterFactoryBean的時(shí)候需要注入:SecurityManager
     *
     Filter Chain定義說明
     1、一個(gè)URL可以配置多個(gè)Filter,使用逗號(hào)分隔
     2、當(dāng)設(shè)置多個(gè)過濾器時(shí),全部驗(yàn)證通過,才視為通過
     3、部分過濾器可指定參數(shù),如perms,roles
     *
     */
    @Bean
    public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager){
        System.out.println("ShiroConfiguration.shirFilter()");
        ShiroFilterFactoryBean shiroFilterFactoryBean  = new ShiroFilterFactoryBean();

        // 必須設(shè)置 SecurityManager
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        // 如果不設(shè)置默認(rèn)會(huì)自動(dòng)尋找Web工程根目錄下的"/login.jsp"頁面
        shiroFilterFactoryBean.setLoginUrl("/login_toLogin");
        // 登錄成功后要跳轉(zhuǎn)的鏈接
        shiroFilterFactoryBean.setSuccessUrl("/usersPage");
        //未授權(quán)界面;
        shiroFilterFactoryBean.setUnauthorizedUrl("/403");
        //攔截器.
        Map filterChainDefinitionMap = new LinkedHashMap<>();

        //配置退出 過濾器,其中的具體的退出代碼Shiro已經(jīng)替我們實(shí)現(xiàn)了
        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");
        //:這是一個(gè)坑呢,一不小心代碼就不好使了;
        //

        filterChainDefinitionMap.put("/**", "authc");


        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
        return shiroFilterFactoryBean;
    }


    @Bean
    public SecurityManager securityManager(){
        DefaultWebSecurityManager securityManager =  new DefaultWebSecurityManager();
        //設(shè)置realm.
        securityManager.setRealm(myShiroRealm());
        // 自定義緩存實(shí)現(xiàn) 使用redis
        //securityManager.setCacheManager(cacheManager());
        // 自定義session管理 使用redis
        securityManager.setSessionManager(sessionManager());
        return securityManager;
    }

    @Bean
    public ShiroRealm myShiroRealm(){
        ShiroRealm myShiroRealm = new ShiroRealm();
//        myShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher());
        return myShiroRealm;
    }

}
    /**
     *  開啟shiro aop注解支持.
     *  使用代理方式;所以需要開啟代碼支持;
     * @param securityManager
     * @return
     */
    @Bean
    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager){
        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
        return authorizationAttributeSourceAdvisor;
    }

    /**
     * 配置shiro redisManager
     * 使用的是shiro-redis開源插件
     * @return
     */
    public RedisManager redisManager() {
        RedisManager redisManager = new RedisManager();
        redisManager.setHost(host);
        redisManager.setPort(port);
        redisManager.setExpire(1800);
        redisManager.setTimeout(timeout);
        // redisManager.setPassword(password);
        return redisManager;
    }

    /**
     * cacheManager 緩存 redis實(shí)現(xiàn)
     * 使用的是shiro-redis開源插件
     * @return
     */
    public RedisCacheManager cacheManager() {
        RedisCacheManager redisCacheManager = new RedisCacheManager();
        redisCacheManager.setRedisManager(redisManager());
        return redisCacheManager;
    }

    /**
     * RedisSessionDAO shiro sessionDao層的實(shí)現(xiàn) 通過redis
     * 使用的是shiro-redis開源插件
     */
    @Bean
    public RedisSessionDAO redisSessionDAO() {
        RedisSessionDAO redisSessionDAO = new RedisSessionDAO();
        redisSessionDAO.setRedisManager(redisManager());
        return redisSessionDAO;
    }

    @Bean
    public DefaultWebSessionManager sessionManager() {
        DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
//        sessionManager.setSessionDAO(redisSessionDAO());
        return sessionManager;
    }

}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/75467.html

相關(guān)文章

  • SpringBootSpringMVC

    摘要:概述用久了,深受其約定大于配置的便利性毒害之后,我想回歸到時(shí)代,看看開發(fā)模式中用戶是如何參與的。備注當(dāng)然本文所使用的全是非注解的配置方法,即需要在中進(jìn)行配置并且需要遵循各種實(shí)現(xiàn)原則。而更加通用主流的基于注解的配置方法將在后續(xù)文章中詳述。 showImg(https://segmentfault.com/img/remote/1460000015244684); 概述 用久了Sprin...

    xavier 評(píng)論0 收藏0
  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務(wù)方面的使用。目標(biāo)達(dá)成后還會(huì)有去構(gòu)建微服務(wù),希望大家多多支持。原文地址手把手教程優(yōu)雅的應(yīng)用四手把手實(shí)現(xiàn)后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學(xué)習(xí) | 掘金技術(shù)征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評(píng)論0 收藏0
  • 慕課網(wǎng)_《2小時(shí)學(xué)會(huì)SpringBoot》學(xué)習(xí)總結(jié)

    摘要:小時(shí)學(xué)會(huì)學(xué)習(xí)總結(jié)時(shí)間年月日星期六說明本文部分內(nèi)容均來自慕課網(wǎng)。慕課網(wǎng)教學(xué)示例源碼暫無。數(shù)據(jù)庫(kù)操作下第六章事務(wù)管理事務(wù)管理只有查詢的時(shí)候不加事務(wù),其它任何操作都要加事務(wù)。第七章課程回顧課程回顧總結(jié)介紹安裝配置的使用數(shù)據(jù)庫(kù)操作 《2小時(shí)學(xué)會(huì)SpringBoot》學(xué)習(xí)總結(jié) 時(shí)間:2017年2月18日星期六說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示...

    aisuhua 評(píng)論0 收藏0
  • springboot學(xué)習(xí)(二)——springmvc配置使用

    摘要:中添加攔截器配置如下攔截所有請(qǐng)求,也就是,只攔截開頭的請(qǐng)求。在中并沒有提供配置文件的方式來配置攔截器,因此需要使用的代碼式配置,配置如下這個(gè)屬性通常并不需要手動(dòng)配置,高版本的會(huì)自動(dòng)檢測(cè)第四點(diǎn)講下靜態(tài)資源映射。 以下內(nèi)容,如有問題,煩請(qǐng)指出,謝謝 上一篇講解了springboot的helloworld部分,這一篇開始講解如何使用springboot進(jìn)行實(shí)際的應(yīng)用開發(fā),基本上尋著sprin...

    hiyayiji 評(píng)論0 收藏0
  • 第三十六章:基于SpringBoot架構(gòu)重寫SpringMVC請(qǐng)求參數(shù)裝載

    摘要:本章目標(biāo)根據(jù)項(xiàng)目定制參數(shù)狀態(tài)并了解的裝載過程以及實(shí)現(xiàn)方式。創(chuàng)建測(cè)試控制器創(chuàng)建名為的控制器并添加數(shù)據(jù)提交的方法,具體代碼如下所示表單提交控制器恒宇少年碼云裝載參數(shù)測(cè)試教師名稱, 在國(guó)內(nèi)企業(yè)開發(fā)項(xiàng)目中大多數(shù)都已經(jīng)偏向Spring家族式的開發(fā)風(fēng)格,在前幾年國(guó)內(nèi)項(xiàng)目都是以Structs2作為Web開發(fā)的主導(dǎo),不過由于近幾年發(fā)生的事情確實(shí)讓開發(fā)者對(duì)它失去了以往的信心。與此同時(shí)Spring家族發(fā)布...

    Ali_ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<