Replace JSR-250 annotations with standard Spring lifecycle callbacks

This commit is contained in:
Vedran Pavic
2022-09-23 08:57:04 +02:00
committed by Rob Winch
parent 954a40f5d1
commit 4b34f35b82
7 changed files with 16 additions and 20 deletions

View File

@@ -22,7 +22,6 @@ dependencyManagement {
dependency 'com.zaxxer:HikariCP:5.0.1' dependency 'com.zaxxer:HikariCP:5.0.1'
dependency 'edu.umd.cs.mtc:multithreadedtc:1.01' dependency 'edu.umd.cs.mtc:multithreadedtc:1.01'
dependency 'io.lettuce:lettuce-core:6.2.0.RELEASE' dependency 'io.lettuce:lettuce-core:6.2.0.RELEASE'
dependency 'jakarta.annotation:jakarta.annotation-api:2.0.0'
dependency 'jakarta.servlet:jakarta.servlet-api:5.0.0' dependency 'jakarta.servlet:jakarta.servlet-api:5.0.0'
dependency 'mysql:mysql-connector-java:8.0.30' dependency 'mysql:mysql-connector-java:8.0.30'
dependency 'org.apache.derby:derby:10.14.2.0' dependency 'org.apache.derby:derby:10.14.2.0'

View File

@@ -6,7 +6,6 @@ dependencies {
api "org.springframework:spring-jcl" api "org.springframework:spring-jcl"
optional "io.projectreactor:reactor-core" optional "io.projectreactor:reactor-core"
optional "jakarta.annotation:jakarta.annotation-api"
optional "jakarta.servlet:jakarta.servlet-api" optional "jakarta.servlet:jakarta.servlet-api"
optional "org.springframework:spring-context" optional "org.springframework:spring-context"
optional "org.springframework:spring-jdbc" optional "org.springframework:spring-jdbc"

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2014-2019 the original author or authors. * Copyright 2014-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -19,7 +19,6 @@ package org.springframework.session.config.annotation.web.http;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import jakarta.annotation.PostConstruct;
import jakarta.servlet.ServletContext; import jakarta.servlet.ServletContext;
import jakarta.servlet.SessionCookieConfig; import jakarta.servlet.SessionCookieConfig;
import jakarta.servlet.http.HttpSessionListener; import jakarta.servlet.http.HttpSessionListener;
@@ -28,6 +27,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
@@ -91,7 +91,7 @@ import org.springframework.util.ObjectUtils;
* @see EnableSpringHttpSession * @see EnableSpringHttpSession
*/ */
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
public class SpringHttpSessionConfiguration implements ApplicationContextAware { public class SpringHttpSessionConfiguration implements InitializingBean, ApplicationContextAware {
private final Log logger = LogFactory.getLog(getClass()); private final Log logger = LogFactory.getLog(getClass());
@@ -107,8 +107,8 @@ public class SpringHttpSessionConfiguration implements ApplicationContextAware {
private List<HttpSessionListener> httpSessionListeners = new ArrayList<>(); private List<HttpSessionListener> httpSessionListeners = new ArrayList<>();
@PostConstruct @Override
public void init() { public void afterPropertiesSet() {
CookieSerializer cookieSerializer = (this.cookieSerializer != null) ? this.cookieSerializer CookieSerializer cookieSerializer = (this.cookieSerializer != null) ? this.cookieSerializer
: createDefaultCookieSerializer(); : createDefaultCookieSerializer();
this.defaultHttpSessionIdResolver.setCookieSerializer(cookieSerializer); this.defaultHttpSessionIdResolver.setCookieSerializer(cookieSerializer);

View File

@@ -23,7 +23,6 @@ dependencies {
testImplementation 'org.assertj:assertj-core' testImplementation 'org.assertj:assertj-core'
testImplementation 'com.hazelcast:hazelcast' testImplementation 'com.hazelcast:hazelcast'
testImplementation 'io.lettuce:lettuce-core' testImplementation 'io.lettuce:lettuce-core'
testImplementation 'jakarta.annotation:jakarta.annotation-api'
testImplementation 'jakarta.servlet:jakarta.servlet-api' testImplementation 'jakarta.servlet:jakarta.servlet-api'
testImplementation 'org.junit.jupiter:junit-jupiter-api' testImplementation 'org.junit.jupiter:junit-jupiter-api'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'

View File

@@ -3,7 +3,6 @@ apply plugin: 'io.spring.convention.spring-module'
dependencies { dependencies {
api project(':spring-session-core') api project(':spring-session-core')
api "com.hazelcast:hazelcast" api "com.hazelcast:hazelcast"
api "jakarta.annotation:jakarta.annotation-api"
api "org.springframework:spring-context" api "org.springframework:spring-context"
testImplementation "jakarta.servlet:jakarta.servlet-api" testImplementation "jakarta.servlet:jakarta.servlet-api"

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2014-2021 the original author or authors. * Copyright 2014-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -26,9 +26,6 @@ import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import com.hazelcast.core.EntryEvent; import com.hazelcast.core.EntryEvent;
import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap; import com.hazelcast.map.IMap;
@@ -40,6 +37,8 @@ import com.hazelcast.query.Predicates;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.session.DelegatingIndexResolver; import org.springframework.session.DelegatingIndexResolver;
import org.springframework.session.FindByIndexNameSessionRepository; import org.springframework.session.FindByIndexNameSessionRepository;
@@ -116,7 +115,8 @@ import org.springframework.util.Assert;
public class HazelcastIndexedSessionRepository public class HazelcastIndexedSessionRepository
implements FindByIndexNameSessionRepository<HazelcastIndexedSessionRepository.HazelcastSession>, implements FindByIndexNameSessionRepository<HazelcastIndexedSessionRepository.HazelcastSession>,
EntryAddedListener<String, MapSession>, EntryEvictedListener<String, MapSession>, EntryAddedListener<String, MapSession>, EntryEvictedListener<String, MapSession>,
EntryRemovedListener<String, MapSession>, EntryExpiredListener<String, MapSession> { EntryRemovedListener<String, MapSession>, EntryExpiredListener<String, MapSession>, InitializingBean,
DisposableBean {
/** /**
* The default name of map used by Spring Session to store sessions. * The default name of map used by Spring Session to store sessions.
@@ -164,14 +164,14 @@ public class HazelcastIndexedSessionRepository
this.hazelcastInstance = hazelcastInstance; this.hazelcastInstance = hazelcastInstance;
} }
@PostConstruct @Override
public void init() { public void afterPropertiesSet() {
this.sessions = this.hazelcastInstance.getMap(this.sessionMapName); this.sessions = this.hazelcastInstance.getMap(this.sessionMapName);
this.sessionListenerId = this.sessions.addEntryListener(this, true); this.sessionListenerId = this.sessions.addEntryListener(this, true);
} }
@PreDestroy @Override
public void close() { public void destroy() {
this.sessions.removeEntryListener(this.sessionListenerId); this.sessions.removeEntryListener(this.sessionListenerId);
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright 2014-2021 the original author or authors. * Copyright 2014-2022 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -76,7 +76,7 @@ class HazelcastIndexedSessionRepositoryTests {
void setUp() { void setUp() {
given(this.hazelcastInstance.<String, MapSession>getMap(anyString())).willReturn(this.sessions); given(this.hazelcastInstance.<String, MapSession>getMap(anyString())).willReturn(this.sessions);
this.repository = new HazelcastIndexedSessionRepository(this.hazelcastInstance); this.repository = new HazelcastIndexedSessionRepository(this.hazelcastInstance);
this.repository.init(); this.repository.afterPropertiesSet();
} }
@Test @Test