Ana içeriğe geç

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çerisinde attributeMap 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ılarak attributeMap alanına ekleme yapılabilir.


drawing Nasıl konfigüre edilir?

hvl-infra altında bulunan 'application-hvl-session.yml' dosyasıyla konfigure edilebilmektedir.


drawing Uygulamaya nasıl eklenir?
group: 'tr.com.havelsan.framework', name: 'hvl-session-context'