spring session的官方文档对SpringBoot方式和xml配置方式介绍的都比较详细,大家应该都能看懂。但java 类配置的方式个人觉得不是很详细, 有的地方可能让人走弯路. 另外若不配springSessionRepositoryFilter会无法写入,但这个类在哪找了一会没有发现其真身.
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webartifactId>
<version>${spring-framework.version}version>
dependency>
<dependency>
<groupId>org.springframework.sessiongroupId>
<artifactId>spring-session-coreartifactId>
<version>2.3.0.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.sessiongroupId>
<artifactId>spring-session-jdbcartifactId>
<version>2.3.0.RELEASEversion>
dependency>
/**
* Spring session的配置文件
* @author xiaofanku
* @since 20200602
*/
@Configuration
@EnableJdbcHttpSession
public class SpringSessionConfig{
@Bean
public SpringHttpSessionConfiguration init(){
JdbcHttpSessionConfiguration config = new org.springframework.session.jdbc.config.annotation.web.http.JdbcHttpSessionConfiguration();
config.setTableName("spring_session");
return config;
}
}
XML配置的方式官方文档介绍的非常详细: Spring XML Configuration
/**
* Spring framework配置类
*
* @author xiaofanku
* @since 20200511
*/
@Configuration
@PropertySource("classpath:global.properties")
@EnableLoadTimeWeaving
@EnableAspectJAutoProxy(proxyTargetClass=true)
@EnableTransactionManagement(proxyTargetClass = true)
@Import(value = {SpringSessionConfig.class})
public class ThronesAppConfig {
@Autowired
private Environment env;
}
因为在SpringSessionConfig类中没有配置数据源(DataSource)和事务管理器(PlatformTransactionManager ),这个类配置文件中需要有相应的@Bean注解的方法, 不一定非要是返回值PlatformTransactionManager的方法,它的实现类也可以,我在这个类中用的是JpaTransactionManager
/**
* Spring 项目启动类
*
* @author xiaofanku
* @since 20200511
*/
public class App extends AbstractAnnotationConfigDispatcherServletInitializer {
//ETC
@Override
protected Filter[] getServletFilters() {
DelegatingFilterProxy filterProxy = new DelegatingFilterProxy();
filterProxy.setTargetBeanName("springSessionRepositoryFilter");
return new Filter[]{
new org.springframework.web.filter.CharacterEncodingFilter("UTF-8", true),
filterProxy};
}
}
[EL Finest]: properties: 2020-06-02 20:05:49.119--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.level.sql; value=FINE
[EL Finest]: properties: 2020-06-02 20:05:49.142--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.timestamp; value=true
[EL Finest]: properties: 2020-06-02 20:05:49.144--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.thread; value=true
[EL Finest]: properties: 2020-06-02 20:05:49.145--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.session; value=true
[EL Finest]: properties: 2020-06-02 20:05:49.147--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.exceptions; value=true
[EL Finest]: properties: 2020-06-02 20:05:49.148--ServerSession(1131509144)--Thread(Thread[main,5,main])--property=eclipselink.logging.parameters; value=true
[EL Finer]: 2020-06-02 20:05:49.76--Thread(Thread[main,5,main])--initializing session manager