1.3. Session#
Uygulama içerisinde istek yaşam döngüsünde session bilgisinin taşınmasını ve kullanılmasını sağlayan altyapı bileşenidir. Bu altyapı bileşeni ihtiyaçlar doğrultusunda genişletilebilmektedir.
Context#
Uygulamada isteğin yaşam döngüsü boyunca Session bilgisi burada tutulmaktadır. HvlSession
sınıfı ile tutulmaktadır.
İki şekilde kullanılabilmektedir:
- DI (Dependency Injection) ile kullanılabilir.
import org.springframework.stereotype.Service;
import tr.com.havelsan.javarch.session.common.model.HvlSession;
import tr.com.havelsan.javarch.session.context.HvlSessionContext;
@Service
public class SampleService {
private final HvlSessionContext sessionContext;
public SampleService(HvlSessionContext sessionContext) {
this.sessionContext = sessionContext;
}
public void test() {
final HvlSession session = sessionContext.currentSession();
}
}
- Bean olmayan sınıflar statik olarak 'Holder' üzerinden kullanılabilir.
import tr.com.havelsan.javarch.session.common.model.HvlSession;
import tr.com.havelsan.javarch.session.context.HvlSessionContextHolder;
import java.util.Objects;
public final class SampleService {
public static SampleService INSTANCE;
public static SampleService getInstance() {
if (Objects.isNull(INSTANCE)) {
INSTANCE = new SampleService();
}
return INSTANCE;
}
public static void test() {
final HvlSession session = HvlSessionContextHolder.currentSession();
}
}
Uygulamada header ve cookie'den alınan bilgiler HvlSessionContextFilter
sınıfında ayrıştırılarak HvlSession
sınıfı ile session bilgisi tutulmaktadır.
NOT:
HvlSession
sınıfı içerisindeattributeMap
alanı bulunmaktadır. Yani istenildiği zaman bu alan kullanılarak session genişletilebilir.Session genişletilmesinin 2 yöntemi bulunmaktadır: *
HvlSessionContextManagerImpl
sınıfı extend edilerek değiştirilmek istenen metotlar değiştirilebilir. *HvlSessionContextFilter
filtesi yerine uygulamaya özgü filtre yazılabilir. Bu filtre sonrasında çalıştırılarakattributeMap
alanına ekleme yapılabilir.
hvl-infra altında bulunan 'application-hvl-session.yml' dosyasıyla konfigure edilebilmektedir.