Domain 46

Spring Security What is Spring Security? Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can.. Domain/Spring 2023. 5. 31.
ObserveOn(), SubscribeOn(), PublishOn() Reactive Programming에서 작업 스레드 관리는 보통 두가지 연산자를 사용하여 처리됩니다. 아래는 그 두 예시입니다. 또 대표적으로 사용되는 ReactiveX와 Reactor의 관점에서 보겠습니다. subscribeOn() ReactiveX의 관점에서의 SubscribeOn은 데이터를 생성하고, I/O 작업을 수행하는 스레드를 지정합니다. 즉, Observable을 실행할 스레드를 결정하는 메함수로 Observable이 Subscribe 되었을 때, 어떤 Thread에서 실행할지를 결정하는 역할을 합니다. 이를 통해, CPU 작업과 I/O 작업이 동시에 일어나는 비동기 처리를 가능케 합니다. 이때, 지정되는 Thread는 ReactiveX의 Schedulers에서 선택할 수 있습니다. Rea.. Domain/Reactive Programming 2023. 5. 12.
Hot vs Cold Reactive Programming에서는 Data Stream을 "Hot" 또는 "Cold"로 분류할 수 있습니다. 여기서 사용하는 Library에 따라 Observable(ReactiveX의 관점)과 Sequence(Reactor의 관점)로 용어가 나뉠 수 있습니다. 따라서 아래의 내용에서 Stream이라는 내용이 나온다면 Observable 또는 Sequence라고 이해하시면 될 것 같습니다. Cold Observable/Sequence 발행자(Publisher)가 구독자(Subscriber)가 등록될 때마다 데이터 스트림을 처음부터 다시 시작하는 방식으로 동작합니다. 이 스트림은 데이터를 새롭게 다시 발행할 수 있으며, 새로운 구독자가 등록될 때마다 데이터의 처음부터 끝까지 모든 항목을 발행합니다.. Domain/Reactive Programming 2023. 5. 12.
Reactive Programming? Reactive Programming은 시스템이 외부 이벤트에 적절하게 대응할 수 있도록 하는 프로그래밍 모델로, 이벤트나 데이터 변화에 반응하여 데이터 처리를 수행합니다. 이 때, 데이터 처리를 비동기적으로 수행하여 높은 성능과 확장성을 제공합니다. Reactive Programming은 이벤트 기반 아키텍처, 즉 마이크로서비스와 같은 분산 시스템에서 많이 사용됩니다. Reactive Programming은 이벤트 스트림을 처리하고, 이벤트 간의 의존성과 관계를 파악하여 다음에 수행할 작업을 예측할 수 있도록 합니다. 이를 통해 시스템의 반응성(Responsiveness)을 향상시키고, 시스템 전체의 성능을 개선할 수 있습니다. Reactive Programming은 비동기적으로 데이터를 처리하고 이벤.. Domain/Reactive Programming 2023. 5. 12.
Filter Filter는 J2EE 표준 스펙 기능으로 Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공합니다. Front Controller인 Dispatcher Servlet의 앞에서 동작합니다. 따라서 Filter는 Spring의 범위 밖에서 동작하고 처리됩니다. Filter는 Spring Bean으로 등록은 되지만 Spring Container가 아닌 톰캣과 같은 Web Container에 의해 관리됩니다. Filter는 FilterChain을 통해 연쇄적으로 동작하도록 할 수 있습니다. Spring에서 Filter를 구현하기 위해서는 javax.servlet.Filter 인터페이스를 구현하여 사용할 수 있습니다. Filt.. Domain/Spring 2023. 1. 28.
[Spring] Logging과 LoggingFramework Logging이란 시스템이 동작할 때, 시스템의 상태 및 동작 정보를 시간 경과에 따라 기록하는 것을 의미합니다. 개발 과정 혹은 개발 후에 발생하는 동작에 대해 트래킹을 하여 예기치 못한 이슈를 진단 및 해결하는데 도움이 됩니다. 하지만 무분별한 로깅은 성능상 이슈를 발생할 수 있기 때문에 의미있는 정보를 적절한 수준으로 수집하는 것이 중요합니다. Java는 System.out.println()을 이용하거나 Logging Framework를 사용하여 로그를 남길 수 있습니다. # System.out.println() # 일명 sout, System.out.println()은 Java를 처음 접할 때부터 사용할 수 있는 간단한 로깅 방법입니다. 가장 편하고 확인하기 좋은 방법이지만 성능에 영향을 많이 주.. Domain/Spring 2022. 9. 2.
[Spring] Web.xml Web Application의 설정을 위한 Deployment Descriptor으로 Web Application이 최초 구동될 때 WEB-INF 디렉토리에 존재하는 web.xml을 읽고, 그에 해당하는 Web Application 설정을 구성합니다. contextConfigLocation /WEB-INF/spring/root-context.xml org.springframework.web.context.ContextLoaderListener appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml 1 appServlet / Dis.. Domain/Spring 2021. 11. 30.
[Spring] JPA 영속성 컨텍스트 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 의미입니다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리합니다. em.persist(object); 이 코드를 단순히 엔티티를 저장한다고 표현했지만 정확히 이야기 하자면 persist()는 엔티티 매니저를 사용해서 데이터를 영속성 컨텍스트에 저장한다는 의미입니다. 영속성 컨텍스트트 엔티티 매니저를 생성할 때 하나 만들어집니다. 그리고 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있고 영속성 컨텍스트를 관리할 수 있습니다. Entity Manager JPA가 제공하는 기능은 크게 엔티티와 테이블을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 나눌 수 있습니다. 엔티티 매니저는 .. Domain/Spring 2021. 11. 18.
[Spring] Context ( RootContext, ServletContext ) Application Context ( Root WebApplication Context ) ContextLoaderListener 클래스에 의해 생성됩니다. Spring에서 IOC Container라고 불리는 존재입니다. ApplicationContext는 root-context.xml, applicationContext.xml의 정보를 바탕으로 생성됩니다. Root라는 이름처럼 최상위 Context입니다. Root Context에 등록된 Bean들은 모든 Context에서 사용할 수 있습니다. 특정 Servlet 설정과 관계 없는 설정을 합니다. Servlet Context을 서브 클래스로 두고 있기 때문에 Servlet Context에 선언된 Bean들은 사용할 수 없습니다. 대표적으로 Servic.. Domain/Spring 2021. 11. 18.
[Android] 액티비티의 생명주기 (Activity Lifecycle) Activity 클래스는 활동이 상태 변화(시스템이 활동을 생성, 중단 또는 다시 시작하거나, 활동이 있는 프로세스를 종료하는 등)를 알아차릴 수 있는 여러 콜백을 제공합니다. 개발자는 이러한 생명 주기 콜백 메서드를 통해 Activity의 작동을 제어 할 수 있습니다. 예를 들어 스트리밍 동영상 플레이어를 빌드하는 경우, 사용자가 다른 앱으로 전환할 때 동영상을 일시중지하고 네트워크 연결을 종료하는 행동을 제어할 수 있습니다. 각 콜백은 Activity 상태 변화에 적합한 특정 작업을 실행할 수 있도록 합니다. 적시에 알맞은 작업을 하고 적절하게 전환을 처리하면 앱이 더욱 안정적으로 기능할 수 있습니다. 예를 들어 수명 주기 콜백을 잘 구현하면 앱에서 다음과 같은 문제가 발생하지 않도록 예방하는 데 도.. Domain/Android 2021. 9. 28.