728x90

Spring 7

[Spring] Thead간 SecurityContextHolder 공유하기

사용자의 정보가 수정이 될 때 SecurityContext의 인증 정보도 같이 업데이트해주도록 코드를 수정하고 있었다. 사용자 정보 수정 페이지에서 인증 정보를 불러와 set 해주는 부분에서는 문제가 발생하지 않았는데, 스레드를 생성해 여러 사용자의 정보를 수정하는 부분에서는 SecurityContext가 null인 것을 확인하였다. 찾아보니 Spring Security의 SecurityContextHolder의 전략(strategy)은 기본적으로 MODE_THREADLOCAL로 되어있다고 한다. SecurityContextHolder에서 제공하는 전략은 1. MODE_THREADLOCAL: 동일한 thread 내에서만 SecurityContextHolder가 공유 2. MODE_INHERITABLETH..

Web/Spring 2022.07.13

[Spring] org.springframework.beans.factory.BeanCreationException, org.springframework.beans.factory.NoSuchBeanDefinitionException 해결하기

회사에 입사 후 처음으로 Spring Framework를 알게 되었고, 그 이후로도 제대로 Spring Framework를 공부한 적 없는 나에게는 가끔 이런 문제 같지도 않은 문제를 만나게 된다. org.springframework.beans.factory.BeanCreationException: Error creating bean with name '클래스명': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private 클래스경로; nested exception is org.spring..

Web/Spring 2022.02.04

[Spring] static 필드에 @Autowired(의존성 주입) 사용하기

겉으로 보기에는 이상이 없는 코드였는데 (물론 이건 내가 실력이 없고 무지했기에 아무런 이상이 없는 코드처럼 보였던 것이다.) NullPointerException이 뜨며 에러가 뜨는 상황이 발생했다. 그래서 디버그 모드로 들어가 하나씩 살펴보던 중 이상한 부분을 발견했다. 바로 @Autowired를 사용한 service 혹은 dao가 null을 저장하고 있었다. null을 저장하고 있던 필드는 static으로 선언된 정적 필드였는데, 이 상황에서 내가 생각했던 것은 정적 필드는 @Autowired를 사용하지 못한다는 생각이었다. 찾아보니 역시나 정적 필드는 @Autowired를 사용할 수 없었고, 이 부분을 모두 바꾸려면 일정을 맞추지 못할 것 같기에 static 필드에 @Autowired를 사용하는 ..

Web/Spring 2021.09.29

[Web] Java Spring을 이용한 Web Terminal 구현하기

Java Spring과 web socket, JSch를 이용하여 웹에서 SSH를 접속하는 Terminal을 구현해 보았다. 프론트는 React를 잘 모르지만 React스럽지 않은 React를 사용하고, Xterm.js를 이용해 Terminal 화면을 띄어주고 sockjs-client를 이용해 소켓 통신을 사용하였다. 제대로 만들지 못했지만 그래도 정상적으로 작동하기 때문에 뿌듯해서 블로그에 글을 올려본다. 사용한 라이브러리들의 라이선스는 spring-websocket은 Apache 2.0 JSch는 BSD Xterm.js와 sockjs-client는 MIT 라이선스를 사용하고 있다. 우선 Spring에서는 pom.xml에 maven repository에서 spring-websocket과 JSch를 가져와..

Web 2021.02.18

시험 준비용 Java 기초, SQL, Spring 정리본

📝 시험 준비 @May 13, 2020 Java static, final 차이점 static : Java에서 static 키워드를 사용한다는 것은 메모리에 한 번 할당되어 프로그램이 종료될 때 해제되는 것을 의미 → 클래스에 고정된 필드와 메소드 - 정적 필드, 정적 메소드 (모든 객체가 공유할 수 있다고 해서 클래스 변수, 클래스 메소드라고도 부름) 일반적으로 우리가 만드는 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap 영역에 생성, 객체의 생성 시에 할당된 Heap 영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받음 static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만, Garbag..

Etc/2020 2020.05.12

Spring Framework 기본 정리

Spring Framework(스프링 프레임워크) Spring Framework란? Srping Framework란? Java 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션 엔터프라이즈급 개발이란 기업을 대상으로 하는 개발. 즉, 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로부터 행해지는 매우 큰 규모의 환경을 엔터프라이즈 환경이라 일컬음 Spring Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리. 객체의 생성 및 소멸 그리고 라이프 사이클을 관리하며 언제든 Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있음. 이는 Spring이 IoC 기반의 Framework임을 의미 S..

Etc/2020 2020.05.12

Spring Framework 정리

Spring Framework 특징 경량 컨테이너 : 스프링 컨테이너는 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리하며, 스프링 컨테이너로부터 필요한 객체를 가져와 사용 DI(Dependency Injection)를 지원 : 의존성 주입 / 설정 파일이나 어노테이션을 통해서 객체 간의 의존 관계를 설정 AOP(Aspect Oriented Programming) 지원 : 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통으로 필요로 하지만 실제 모듈의 핵심은 아닌 기능들을 분리해서 각 모듈에서 사용 POJO(Plain Old Java Object) 지원 : 구식 자바 객체 지원 / 특정한 API를 상속하거나 구현하지 않은 일반적인 자바 객체로 개발 -> 프레임워크 또는 클라이언트 간의 이식성을 높..

Etc/2020 2020.05.11
728x90