Spring/Spring
-
SubscribeOn , PublishOnSpring/Spring 2021. 12. 23. 10:28
1. SubscribeOn 와 PublishOn이 혼용된 코드 1.1. Code 1 2 3 4 5 6 Flux.range(1,5) .publishOn(Schedulers.newSingle("pub1")) .map(i -> i * 10) .subscribeOn(Schedulers.newSingle("sub1")) .log() .subscribe(); cs subscribeOn 이후에 log() 를 봐보자. 어떤 쓰레드에서 log() 가 실행될까? 리엑터 공식 문서를 보면 subscribeOn을 호출한 객체를 구독할 때는 해당 스트림 전체가 해당 스케쥴러로 다 바뀐다고 하였다. 따라서 "sub1" 이라는 쓰레드에서 실행이 될까? 아니면 그 위에 publishOn에 의해 "pub1" 이라는 쓰레드에서 실행 될..
-
1주차 스프링 스터디Spring/Spring 2021. 4. 19. 22:11
스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 객체 지향 프로그래밍? 객체 지향 프로그래밍은 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 객체 지향 프로그래밍을 위한 세가지 요소 캡슐화 다형성 상속 캡슐화 객체 지향의 중요한 원리는 캡슐화이다. 캡슐화는 외부에서 알 필요가 없는 부분을 감춤으로써 대상을 단순화하는 추상화의 한 종류다. 객체는 자신이 어떤 데이터를 가지고 있는지를 내부에 캡슐화하고 외부에 공개해서는 안된다. 객체는 스스로의 상태를 책임져야 하며 외부에서는 인터..
-
ThreadLocal 과 SpringSecuritySpring/Spring 2020. 8. 9. 14:54
ThreadLocal Java.lang 패키지에서 제공하는 스레드 범위 변수이다. 스레드 수준의 데이터 저장소로써 같은 스레드 내에서만 공유한다. 따라서 같은 스레드라면 해당 데이터를 메서드 매개변수로 넘겨줄 필요가 없게 된다. 클래스에서 한 변수를 선언한다면 해당 변수의 scope은 해당 클래스가 될 것이다 메서드 안의 변수의 scope은 해당 메서드가 될 것이다. ThreadLocal에서 변수의 scope은 Thread가 되며 한 스레드 내에서 변수를 공유한다. 요청이 한 쓰레드내에서 사용된다면 파라미터로 전달하지 않아도 된다. 1. 가져온 유저의 정보를 ThreadLocal을 통해 setAccount에 저장해보자. 2. SpringSecurityContextHolder에는 Authentication..
-
AuthenticationManager와 AuthenticationSpring/Spring 2020. 8. 9. 03:05
SecurityContextHolder는 Authentication을 담고 있는 곳이며 실제 Authentication을 만들고 인증을 처리하는 인터페이스는 AuthenticationManager이다. AuthenticationManager는 authenticate라는 메서드만을 가지며 여기서 authentication은 유저가 입력한 username, password 등의 인증정보를 담고 있다. 유효한지 확인 후 UserDetailsService가 return 한 객체를 Principal로 담고 있는 Authentication 객체를 return 해준다. 실제 이러한 인증의 구현체로 ProviderManager을 사용하게 된다. ProviderManager에 Debug을 걸어서 어떠한 과정으로 인증이 ..
-
SpringSecurityContextHolder와 AuthenticationSpring/Spring 2020. 7. 23. 16:36
SecurityContextHolder -> SecurityContext -> Authentication Authentication안에 Principal 정보가 들어가 있다. principal은 인증한 사용자의 정보를 나타낸다. 인증한 사용자의 정보란? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Service public class AccountService implements UserDetailsService { @Autowired AccountRepository accountRepository; @Autowired PasswordEncoder passwordEncoder; @Override public UserDetails loadUserByUsern..
-
IOC ( Inversion Of Control ) 와 IOC 컨테이너Spring/Spring 2020. 2. 22. 17:34
IoC(Inversion of Control, 제어의 역전)란 기존에 자바 기반으로 애플리케이션을 개발할 때 자바 객체를 생성하고 서로 간의 의존관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 애플리케이션에 있었다. 그러나 Servlet 등을 사용하는 경우 Servlet Container에게 제어권이 넘 어가서 객체의 생명주기(라이프사이클)을 Container들이 전담하게 된다. 이처럼 IoC에서 이야기하는 제어권의 역전이 란 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것(IoC 컨테이너)을 의미 한다. 스프링에서의 IOC 스프링 프레임워크의 가장 큰 장점으로 IoC 컨테이너 기능이 부각되어 있으나, IoC 기능은 스프링 프레임워크가 탄생하 기 훨씬 이전부터 사용되..