Spring

· Spring
멀티스레드 환경에서는 여러 요청이 동시에 처리되기 때문에, 공유 자원 관리가 중요한 과제입니다.공유 객체를 잘못 관리하면 데이터 꼬임, 동기화 비용 증가, 심지어 보안 이슈까지 발생합니다. 이 문제를 해결하기 위해 자바는 ThreadLocal이라는 도구를 제공합니다.ThreadLocal은 이름 그대로 스레드마다 독립적인 저장 공간을 만들어주어,동기화 비용 없이 안전하게 데이터를 보관할 수 있습니다.1. ThreadLocal이란?ThreadLocal은 스레드 단위로 값을 보관할 수 있는 저장소즉, 같은 변수를 여러 스레드가 접근해도 서로 영향을 주지 않는다.set(value): 현재 스레드의 저장소에 값 저장get(): 현재 스레드의 저장소에서 값 조회remove(): 현재 스레드의 저장소에서 값 삭제(메..
· Spring
1. RabbitMQ란?RabbitMQ는 메세지 브로커(Message Broker)입니다. 프로그램끼리 직접 통신하지 않고, 중간에 RabbitMQ가 우체국 역할을 하면서 메세지를 안전하게 전달해줍니다.Producer(발행자) -> 메세지를 보냄Exchange(교환소) -> 메세지 목적지 결정Queue(큐) -> 메세지가 실제로 저장되는 공간Consumer(소비자) -> 큐에서 메세지를 꺼내 처리 👉 비유“편지를 보내면, 교환소(우체국 창구)가 주소를 보고 적절한 우체통(큐)에 넣고, 편지함을 열어보는 사람이 소비자(Consumer)다.”2. 메세지 흐름 구조Producer → Exchange → Queue → ConsumerProducer: 메시지를 발행Exchange: 메시지를 어떤 큐로 보낼지 결..
· 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, ..
· Spring
이와같이 패키지에 파일이 아무것도 없을때, 불편한 적이 있는데 아래와 같이 있는 루트로 들어가게되면 Compact Middle Packages 항목의 체크표시를 풀어주면 됩니다!!   저는 이와같이 전체 분리되어있는게 보기 더 편하더라고요 :) 혹시나 저와같이 찾는 분이 있을까봐 정리한, 인텔리제이 사용법이였습니다 :)
이진유진
'Spring' 카테고리의 글 목록