一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Sprigmvc項目轉為springboot的方法

Sprigmvc項目轉為springboot的方法

2021-04-01 14:37geeksblog Java教程

本篇文章主要介紹了Sprigmvc項目轉為springboot的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

是否有老掉牙的springmvc項目,想轉成springboot項目,看這個文章就對了。

說明

如果你的項目連maven項目都不是,請自行轉為maven項目,在按照本教程進行。

本教程適用于spring+springmvc+mybatis+shiro的maven項目。

1.修改pom文件依賴

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<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>
    </dependency>
 
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
 
      <!-- 這個是剔除掉自帶的 tomcat部署的-->
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
      </exclusions>
 
    </dependency>
    <!-- tomcat容器部署 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <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>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>
    <!-- 支持 @ConfigurationProperties 注解 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>
 <dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
 </dependency>
</dependencies>

添加springboot構建插件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>1.7</source>
      <target>1.7</target>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.5.9.RELEASE</version>
    <executions>
      <execution>
        <goals>
          <goal>repackage</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>

2.添加application啟動文件

注意,如果Application在controller,service,dao的上一層包里,無需配置 @ComponentScan ,

否則,需要指明要掃描的包。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@SpringBootApplication
//@ComponentScan({"com.cms.controller","com.cms.service","com.cms.dao"})
public class Applicationextends 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);
  }
}

3.添加springboot配置文件

在resources下面添加application.properties文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
添加基本配置
#默認前綴
server.contextPath=/
# 指定環境
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/
#數據源
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

4.使用@Configuration注入配置

注入mybatis配置,分頁插件請自主選擇

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
@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的順序,不要搞亂了

?
1
2
3
4
5
6
7
@Configuration
public class InterceptorConfigurationextends WebMvcConfigurerAdapter{
  @Override
  public void addInterceptors(InterceptorRegistry registry){
    registry.addInterceptor(new LoginHandlerInterceptor());
  }
}

添加shiro配置文件

注意:本來使用redis做session緩存,但是和shiro集成發現一個問題,user對象存儲以后,從shiro中獲取后,無法進行類型轉換,所以暫時放棄了redis做session緩存。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
@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 處理攔截資源文件問題。
   * 注意:單獨一個ShiroFilterFactoryBean配置是或報錯的,因為在
   * 初始化ShiroFilterFactoryBean的時候需要注入:SecurityManager
   *
   Filter Chain定義說明
   1、一個URL可以配置多個Filter,使用逗號分隔
   2、當設置多個過濾器時,全部驗證通過,才視為通過
   3、部分過濾器可指定參數,如perms,roles
   *
   */
  @Bean
  public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager){
    System.out.println("ShiroConfiguration.shirFilter()");
    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
 
    // 必須設置 SecurityManager
    shiroFilterFactoryBean.setSecurityManager(securityManager);
    // 如果不設置默認會自動尋找Web工程根目錄下的"/login.jsp"頁面
    shiroFilterFactoryBean.setLoginUrl("/login_toLogin");
    // 登錄成功后要跳轉的鏈接
    shiroFilterFactoryBean.setSuccessUrl("/usersPage");
    //未授權界面;
    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);
    return shiroFilterFactoryBean;
  }
 
 
  @Bean
  public SecurityManager securityManager(){
    DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
    //設置realm.
    securityManager.setRealm(myShiroRealm());
    // 自定義緩存實現 使用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實現
   * 使用的是shiro-redis開源插件
   * @return
   */
  public RedisCacheManager cacheManager(){
    RedisCacheManager redisCacheManager = new RedisCacheManager();
    redisCacheManager.setRedisManager(redisManager());
    return redisCacheManager;
  }
 
  /**
   * RedisSessionDAO shiro sessionDao層的實現 通過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;
  }
 
}

總結

搞了一天時間把項目轉成springboot,查閱各種資料,希望這篇文章能夠為你帶來幫助。也希望大家多多支持服務器之家。

原文鏈接:http://geeksblog.cc/sprigmvc2boot.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一区精品二区三区 | 欧美sex另类孕妇 | 香蕉精品国产高清自在自线 | 手机在线伦理片 | 探花 在线 | 女同videos双性人 | 精品一成人岛国片在线观看 | 精品国产精品国产偷麻豆 | 国产午夜亚洲精品一区网站 | 免费观看欧美成人禁片 | 欧美日韩高清完整版在线观看免费 | 欧美三级不卡视频 | 成人福利 | 日韩有码| 国产香蕉一区二区精品视频 | 天天色踪合 | 亚洲精品二三区伊人久久 | 亚洲国产免费 | 亚洲欧洲日产国码 最新 | 99久久精品99999久久 | 男人在女人下面狂躁 | 精品午夜中文字幕熟女人妻在线 | 欧美日韩一区二区中文字幕视频 | 无码区国产区在线播放 | 久久无码AV亚洲精品色午夜麻豆 | 国产精品原创巨作无遮挡 | 成年人免费在线看的惊悚动作片 | 亚洲成年人免费网站 | 99在线视频观看 | 乌克兰肥熟 | 激情另类国内一区二区视频 | 色综合久久九月婷婷色综合 | 欧美日本道免费一区二区三区 | 亚洲第一福利网 | 清纯漂亮女友初尝性过程 | 黄在线观看www免费看 | 国产成人福利免费视频 | 国产91精选学生在线观看 | 99久久精品自在自看国产 | 91久久国产露脸精品 | 无码11久岁箩筣 |