@Configuration과 싱글톤 보장
·
Spring
다음 코드를 보면 AppConfig 내부에서 memberRepository()를 여러 번 호출합니다.@Configurationpublic class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public MemberRepository memberRepository() { ..
BeanDefinition — 설정 정보의 공통 추상화
·
Spring
스프링은 설정 방식(XML, 자바, Groovy 등)에 관계없이 내부적으로모든 설정을 BeanDefinition이라는 추상 구조로 변환합니다.for (String name : ac.getBeanDefinitionNames()) { BeanDefinition beanDefinition = ac.getBeanDefinition(name); if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) { System.out.println("beanDefinitionName=" + name + " beanDefinition=" + beanDefinition); }} 스프링 컨테이너는 BeanDefinition을 기반으로 빈을 생..
[Java] (CT) 리눅스 쉘 명령어 모의 구현 (mkdir, rm, cp)
·
Algorithms
문제리눅스의 기본 쉘 명령어인 mkdir, rm, cp를 모의 구현하는 프로그램을 작성하는 문제입니다.mkdir directory새로운 디렉토리를 생성합니다.rm directory특정 디렉토리를 삭제합니다. (하위 디렉토리 포함)cp source dest특정 디렉토리를 다른 위치로 복사합니다. (하위 디렉토리 포함)모든 명령을 실행한 후 남아있는 디렉토리 구조를 사전 순으로 정렬된 배열 형태로 반환해야 합니다.[입출력 예]#1directory command result#2directory command result[입출력 예 설명]입력으로 주어진 초기 디렉토리 구성은 다음과 같습니다. "mkdir /root/tmp" 명령을 수행한 후 디렉토리 구성은 다음과 같습니다. "cp /hello /root/tm..
[Java] 프로그래머스 뒤집힌 문자열, 문자열안에 문자열, 문자열 정렬하기 (1), (2)
·
Algorithms
1. 뒤집힌 문자열문제 설명문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.제한사항1 ≤ my_string의 길이 ≤ 1,000입출력 예my_stringreturn"jaron""noraj""bread""daerb" 코드class Solution { public String solution(String my_string) { StringBuilder sb = new StringBuilder(my_string); return sb.reverse().toString(); }} Java에서 String 객체에는 reverse() 메서드가 없다.reverse()는 StringBui..
BeanFactory와 ApplicationContext
·
Spring
ApplicationContext는 우리가 흔히 “스프링 컨테이너”라고 부르는 객체입니다.그 상위 인터페이스가 바로 BeanFactory입니다.구분BeanFactoryApplicationContext역할스프링 컨테이너의 최소 기능 제공BeanFactory + 다양한 부가기능제공 기능빈 생성, 조회 (getBean())국제화, 환경 변수, 이벤트, 리소스 로딩사용거의 직접 사용하지 않음대부분 이 인터페이스로 컨테이너 생성 즉, ApplicationContext는 BeanFactory의 확장판입니다.단순한 DI 컨테이너를 넘어, 실제 애플리케이션 운영에 필요한 기능을 제공합니다.
[Java] 백준 14503 로봇 청소기
·
Algorithms
문제 규칙현재 칸이 아직 청소 안 된 빈칸(0) 이면 → 청소한다.현재 칸의 주변 4칸에 청소 안 된 빈칸이 있으면 →→ 반시계(왼쪽)으로 90도 회전 → 그 칸이 청소 안 됐으면 전진 → 다시 1번부터 반복주변 4칸 모두 청소돼 있거나 벽이면 →→ 바라보는 방향 그대로 둔 채로 “뒤로 한 칸 후진” → 다시 1번부터 반복→ 뒤가 벽이면 작동 종료코드 구조 public class Main { static int N, M, r, c, d; // 방 크기, 시작 좌표(r,c), 시작 방향(d) static int [][] arr; // 방 정보 (0=빈칸, 1=벽, -1=청소한 칸) static int count = 1; // 청소한 칸 개수 static int[] dx..
컨테이너 안의 빈은 어떻게 등록되고 조회될까
·
Spring
모든 빈 조회String[] beanNames = ac.getBeanDefinitionNames();for (String name : beanNames) { Object bean = ac.getBean(name); System.out.println("name=" + name + " object=" + bean);}getBeanDefinitionNames() : 등록된 모든 빈 이름 조회getBean(name) : 이름으로 빈 객체 조회스프링은 내부적으로 사용하는 빈(ROLE_INFRASTRUCTURE)과사용자가 직접 등록한 빈(ROLE_APPLICATION)을 구분해 관리합니다.특정 빈 조회MemberService memberService = ac.getBean("memberService", ..
스프링 컨테이너란 무엇인가
·
Spring
스프링 컨테이너는 객체의 생성, 의존관계 주입, 생명주기 관리를 담당하는 핵심 구조입니다.우리가 작성한 클래스들을 스프링이 대신 생성하고, 필요한 객체를 주입해주는 역할을 합니다.컨테이너를 생성하는 기본 코드는 다음과 같습니다.ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);ApplicationContext : 스프링 컨테이너의 대표 인터페이스AnnotationConfigApplicationContext : 자바 설정 클래스를 사용하는 구현체AppConfig.class : 설정 정보를 담은 클래스컨테이너 생성은 다음 네 단계를 거칩니다.컨테이너 생성 – 설정 정보를 읽어..