@Component와 @Bean
·
Programming/Spring
@Component와 @Bean의 차이특징@Component@Bean사용 위치클래스 레벨메서드 레벨자동 감지스프링의 컴포넌트 스캔으로 자동 감지 가능스프링이 명시적으로 메서드를 호출하여 빈 생성소스 코드 의존성클래스의 소스 코드가 수정 가능해야 사용 가능제3자 라이브러리 클래스에도 적용 가능유연성간결하지만 인스턴스 생성 로직에 대한 제어 제한로직 추가를 통해 다양한 조건에 따른 빈 생성 가능@Component는 수정 가능한 클래스에만 적용될 수 있다는 점이 의문이 들었지만, 외부 라이브러리 클래스는 코드 수정이 불가능하므로 @Component 애노테이션을 붙일 수 없다는 점을 생각하면 당연하다. 따라서, 외부 라이브러 클래스는 @Bean을 통해 빈 생성이 가능하다.BeanExample might repr..
Autowired
·
Programming/Spring
@Autowired 빈 주입 방식 3가지생성자필드Setter@Autowired와 빈 주입 과정 이해@Autowired로 빈을 주입할 때, required = false 옵션을 사용하면 빈 주입이 이루어지지 않아도 객체가 생성될 수 있다. 하지만 생성자 주입 방식은 주입할 빈이 반드시 필요하므로, 주입 대상 빈이 없으면 객체 생성에 실패한다.@Componentpublic class ExampleService { private final DependencyService dependencyService; // 생성자 주입 @Autowired public ExampleService(DependencyService dependencyService) { this.dependency..
ApplicationContext 2가지 빈 설정 방식
·
Programming/Spring
ApplicationContext의 빈 설정 방식ClassPathXmlApplicationContext:XML 파일을 통해 Spring 빈을 정의하고 로드하는 과거 방식입니다.주로 applicationContext.xml과 같은 파일에서 빈 정의를 작성했습니다.AnnotationConfigApplicationContext:Java 기반의 빈 설정을 사용하는 방식입니다.XML 대신 자바 클래스를 사용하여 빈을 정의하고 구성합니다.Java 기반 빈 설정자바로 빈을 등록할 때는 @Configuration과 @ComponentScan 애너테이션을 활용합니다.@Configuration: 설정 클래스를 나타냅니다. 이 클래스는 하나 이상의 @Bean 메서드를 포함하며, 이러한 메서드들이 생성하는 객체를 Spring..
RequestBody 자바 객체 매핑
·
Programming/Spring
기본 생성자가 없음에도 @RequestBody를 통해 Java 객체가 올바르게 생성되었다. 기본적으로 리플렉션과 기본 생성자를 사용해 매핑된다고 알고 있었기에 의문이 들었다.@Getter@Builderpublic class SignupRequest { @NotBlank(message = "Email is required") @Email(message = "Invalid email format") private String email; @NotBlank(message = "Password is required") @Size(min = 6, max = 20, message = "Password must be between 6 and 20 characters") private String passw..
RabbitMQ와 Kafka
·
Kafka
RabbitMQ메시지를 생산자(Producer)로부터 받아 큐에 저장하고, 이를 소비자(Consumer)가 관리.메시지가 처리되면 큐에서 제거됨(일회성 메시지 처리).AMQP (Advanced Message Queuing Protocol) 표준을 따름. Kafka메시지를 토픽으로 저장하며, 파일 시스템 기반의 로그 관리.메시지는 여러 소비자가 독립적으로 읽을 수 있음.메시지는 제거되지 않고, 지정된 기간 동안 유지.특징RabbitMQKafka메시지 전달 방식Push (브로커가 소비자에게 전달)Pull (소비자가 직접 가져감)메시지 보관처리 후 큐에서 삭제됨토픽에 로그 형태로 저장, 유지기간 동안 재처리 가능메시지 순서 보장큐 단위에서만 보장파티션 단위에서 보장내구성디스크 또는 메모리에 저장 가능디스크에 ..
spring kafka vs apache kafka
·
Kafka
apache kafkaapache Kafka 공식 라이브러리.Kafka 클라이언트를 제공하여 Kafka 브로커와 직접 통신하도록 지원.spring kafkaSpring Framework의 Kafka 통합 라이브러리.org.apache.kafka를 기반으로 하고 있으며, Spring 애플리케이션에 친화적인 기능을 추가.spring boot에서 apache kafka를 조금 더 편리하게 사용할 수 있도록 한 라이브러리가 spring kafka이다.예시apache kafka(저수준 API) producer.close()를 명시적으로 호출해야 자원을 적절히 해제할 수 있음.Spring과의 통합 기능이 없어 별도로 관리해야 함. import org.apache.kafka.clients.producer.KafkaP..
Interface와 Abstract Class 차이
·
Programming/Java
인터페이스클래스 간 반드시 따라야 하는 행동 계약을 정의한다.여러 클래스가 공통된 동작을 제공하도록 강제한다.다중 상속을 지원한다.추상 클래스상속을 통해 코드를 재사용하거나 공통된 기능을 제공하기 위한 기본 클래스의 역할상속 계층 구조에서 사용된다. 다중 상속이 필요하지 않은 경우 적합하다.인터페이스는 다중 상속을 지원하고 모든 메서드가 추상 메서드이며, 구현을 강제합니다. 반면에 추상 클래스는 일부 구현을 가질 수 있고, 단일 상속만 지원합니다.
[DP] 91. Decode Ways
·
Algorithm/LeetCode
문제You have intercepted a secret message encoded as a string of numbers. The message is decoded via the following mapping:"1" -> 'A' "2" -> 'B' ... "25" -> 'Y' "26" -> 'Z'However, while decoding the message, you realize that there are many different ways you can decode the message because some codes are contained in other codes ("2" and "5" vs "25").For example, "11106" can be decoded into:"AAJF"..
스터디를 마치며 (24.11.01 ~ 24.11.29)
·
외부활동/JSCODE 네트워크
이직 준비를 위해 면접 스터디를 찾던 중, 마침 JSCODE에서 진행하는 면접 스터디 모집 공고를 발견했다. 체계적인 진행 방식과 긍정적인 후기들이 많아 고민 없이 신청하게 되었다. 평소 내 생각을 명확히 표현해 본 경험이 부족하고, 설명에 자신이 없었던 터라 기대와 함께 약간의 걱정도 있었다. 스터디를 직접 경험해 보니 진행 방식은 정말 체계적이었다. 지원자 역할뿐만 아니라 면접관과 관찰자 역할도 번갈아 가며 수행하면서 면접 과정을 다각도로 이해할 수 있었다. 또한 스터디 후 구글 폼을 통해 서로 피드백을 주고받으며 자신의 강점과 약점을 객관적으로 파악할 수 있었다는 점도 매우 유익했다. 1주 차에는 지원자 입장에서 면접관의 질문에 대답하며 몇 가지 문제에 직면했다. 말을 끊어가며 뜸을 들이는 경향이 ..
Switch, Router? Mac 주소, IP 주소? ARP?
·
Network
L2 Switch (Layer 2 스위치)다른 이름: 일반적으로 스위치(Switch)라고도 불림.작동 계층: OSI 모델의 데이터링크 계층(2계층)에서 작동.역할:MAC 주소를 기반으로 데이터를 전송(스위칭).같은 네트워크(LAN) 내에서 내부 단말 기기들을 구분하고, 효율적으로 데이터 프레임을 전달.특징:MAC 주소 테이블(CAM 테이블)을 유지하여 효율적으로 스위칭.데이터 충돌(Collision)을 방지하고 네트워크 성능을 향상.Router (라우터)작동 계층: OSI 모델의 네트워크 계층(3계층)에서 작동.역할:IP 주소를 기반으로 데이터를 경로 지정(라우팅).서로 다른 네트워크(LAN ↔ WAN) 간의 데이터를 전달하고 구분.특징:패킷을 목적지 네트워크로 효율적으로 전달하기 위해 라우팅 테이블을 ..