Spring

· Spring
멀티스레드 환경에서는 여러 요청이 동시에 처리되기 때문에, 공유 자원 관리가 중요한 과제입니다.공유 객체를 잘못 관리하면 데이터 꼬임, 동기화 비용 증가, 심지어 보안 이슈까지 발생합니다. 이 문제를 해결하기 위해 자바는 ThreadLocal이라는 도구를 제공합니다.ThreadLocal은 이름 그대로 스레드마다 독립적인 저장 공간을 만들어주어,동기화 비용 없이 안전하게 데이터를 보관할 수 있습니다.1. ThreadLocal이란?ThreadLocal은 스레드 단위로 값을 보관할 수 있는 저장소즉, 같은 변수를 여러 스레드가 접근해도 서로 영향을 주지 않는다.set(value): 현재 스레드의 저장소에 값 저장get(): 현재 스레드의 저장소에서 값 조회remove(): 현재 스레드의 저장소에서 값 삭제(메..
· Spring
Java 백엔드 개발을 시작하면 가장 많이 듣는 두 가지 프레임워크가 Spring과 SpringBoot입니다.Spring Boot는 Spring 기반이지만, 설정 방식과 개발 편의성에서 큰 차이가 있습니다.이번 글에서는 두 기술의 차이를 간단히 정리합니다.Spring과 Spring Boot의 기본 개념SpringJava 기반의 엔터프라이즈 애플리케이션 프레임워크핵심 기능: DI(의존성 주입), AOP(관점 지향 프로그래밍)XML 또는 Java Config로 환경 설정을 직접 작성프로젝트 시작 시 톰캣(Tomcat) 같은 서버를 따로 설치/연동 필요Spring BootSpring을 더 쉽게 사용하기 위한 도구자동 설정(Auto Configuration) 기능 제공내장 톰캣/Jetty 서버 포함 -> 별도 ..
· Spring
Spring Framework에서 의존성 주입(Dependency Injection, DI)은 핵심적인 개념입니다.DI를 제대로 활용하기 위해서는 스프링이 어떻게 객체를 관리하고 주입하는지를 이해해야 하며,이를 위해 Bean 등록 방식과 관련 어노테이션의 동작 방식에 대한 정확한 이해가 필요합니다. 이 글에서는 Spring에서 사용하는 Bean 등록 전략과 함께 @Component, @Service, @Repository, @Controller, @Bean의 의미와 차이를 상세히 정리합니다.1. Bean이란?Bean은 Spring IoC 컨테이너가 생성하고 관리하는 객체를 말합니다.IoC(Inversion of Control, 제어의 역전)를 통해 객체의 생성과 생명주기를 프레임워크가 책임지며, 개발자..
· Spring
Spring에서 ApplicationContext는 Spring 컨테이너를 의미하여, Spring Bean을 관리하는 핵심 인터페이스입니다.즉, Spring에서 객체(Bean)의 생성, 초기화, 의존성 주입(DI), 생명주기 관리 등을 담당합니다. 1. ApplicaionContext 의 역할 Spring 애플리케이션에서 중앙 컨테이너 역할을 하며 다음 기능을 제공합니다.Bean 등록 및 관리- @Component, @Service, @Repository, @Controller, @Bean 등을 사용하여 Spring Bean을 관리- 싱글톤(Singleton) 스코프를 기본적으로 유지의존성 주입(DI, Dependency Injection)- @Autowired, @Qualifier, @Inject 등을..
· Spring
개념Self-Invocation은 객체가 자기 자신의 메서드를 호출하는 것을 의미합니다. 즉, 클래스 내부에서 자기 자신의 다른 메서드를 호출하는 경우입니다.  하지만, Spring AOP에서 Self-Invocation은 AOP가 적용되지 않는 문제를 일으킬 수 있습니다.  1. Self-Invocation 예제@Servicepublic class MyService { public void methodA() { System.out.println("Method A 실행"); methodB(); // Self-Invocation (자기 자신 호출) } public void methodB() { System.out.println("Method B 실행"..
· Spring
개념프록시는 '대리인'이라는 뜻을 가지며, 소프트웨어에서 클라이언트와 대상 객체 사이에서 중간 역할을 수행하는 객체를 의미합니다.용도 보안(Security): 직접 접근을 막고 제어할 수 있음.성능 향상(Caching, Lazy Loading): 객체 생성을 지연시키거나 캐시를 활용함.로깅(Logging) 및 모니터링(Monitoring): 메서드 호출 전후로 로깅을 추가할 수 있음.트랜잭션(Transaction) 관리: 데이터베이스 트랜잭션을 프록시 객체에서 처리할 수 있음.AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)와 프록시 기반 동작 방식Spring AOP는 프록시(Proxy) 기반으로 동작하며, 주로 Spring의 @Transactional, @Aspect, ..
· 개발Log
오늘은 회사에서 레디스 세션 체크를 통한 로그아웃 로직을 구현하며 알게 된 것을 정리해보려 합니다!Redis주소는 맞게 들어가는데, 왜 값을 못가져올까??처음 보는 상황에 많이 당황했었는데요..Spring Transactional을 사용하면 Redis와 다르게 처리가 되는 방식이라, 제대로 작동이 되지 않았던 것이었습니다!오랜만에 새롭게 알게 된 내용이라 한번 정리를 해보려 합니다. Spring framework를 사용해 애플리케이션을 개발 시, 데이터베이스 트랜잭션 관리를 위해 흔히 @Transactional을 사용하고 있습니다. 그러나 Redis와 NoSQL 데이터베이스를 사용할 때는 @Transactional을 동일하게 사용할 수 없습니다.  이번 글에서는 그 이유와 Redis에서 트랜잭션을 사용하..
· Spring
회사에서 스프링 시큐리티를 컨트롤하다, 기존 Controller의 리턴값에서 불편함을 느껴 스터디를 진행해보았습니다. ResponseEntity란? Spring Framework에서 HTTP 응답을 나타내는 클래스입니다. 주로 MVC 컨트롤러에서 클라이언트에게 HTTP 응답을 반환할 때 사용됩니다. ResponseEntity는 응답의 HTTP 상태 코드, 헤더, 본문(Body) 등을 포함하는데 사용됩니다. HTTP 상태코드(Status Code) HTTP Headers 헤더는 키-값의 쌍으로 이루어져 있습니다. 캐시관련 헤더, 컨텐츠 헤더, 인코딩 등이 있습니다. 응답 본문(Body) 클라이언트로 전송될 응답의 본문을 나타냅니다. 주로 JSON, XML, HTML 등의 형식으로 데이터를 포함할 수 있습니..
이진유진
'Spring' 태그의 글 목록