[{"data":1,"prerenderedAt":343},["ShallowReactive",2],{"post-document:\u002Fbackend\u002Fspring\u002Fspring_container\u002F2026\u002F08\u002F14\u002Fcontainer\u002F":3},{"id":4,"title":5,"body":6,"categories":326,"date":330,"description":331,"extension":332,"image":333,"key_concepts":333,"last_modified_at":333,"legacyPath":334,"meta":335,"navigation":337,"part":333,"path":338,"published":337,"robots":333,"seo":339,"series":333,"stem":340,"strengths":333,"summary":333,"tags":341,"tradeoffs":333,"__hash__":342},"posts\u002Fposts\u002FBackend\u002FSPRING\u002FSpring_Container\u002Fcontainer.md","Spring 컨테이너",{"type":7,"value":8,"toc":319},"minimark",[9,13,20,25,51,182,186,190,200,216,220,224],[10,11,5],"h1",{"id":12},"spring-컨테이너",[14,15,16],"ul",{},[17,18,19],"li",{},"자바 객체의 (Bean)의 생성부토 소멸까지의 생명 주기를 관리하고, 객체 간 의존 관계를 생성",[21,22,24],"h2",{"id":23},"핵심-역할","핵심 역할",[14,26,27,35,43],{},[17,28,29,30],{},"객체 관리:\n",[14,31,32],{},[17,33,34],{},"개발자가 new 연산자로 객체를 직접 생성하지 않고, 컨테이너가 객체를 대신 생성\u002F소멸",[17,36,37,38],{},"의존성 주입 DI:\n",[14,39,40],{},[17,41,42],{},"객체 A가 객체 B를 필요로 할때, 컨테이너가 런타임에 B를 A에게 주입하여 조립",[17,44,45,46],{},"싱글톤 관리:\n",[14,47,48],{},[17,49,50],{},"객체를 기본적으로 단 하나만 생성 Singleton Pattern하여 재사용",[52,53,54,75],"table",{},[55,56,57],"thead",{},[58,59,60,64,70],"tr",{},[61,62,63],"th",{},"구분",[61,65,66],{},[67,68,69],"code",{},"BeanFactory",[61,71,72],{},[67,73,74],{},"ApplicationContext",[76,77,78,92,105,116,133,147,160,171],"tbody",{},[58,79,80,84,87],{},[81,82,83],"td",{},"설명",[81,85,86],{},"가장 기본적인 스프링 IoC 컨테이너",[81,88,89,91],{},[67,90,69],{},"를 확장한 컨테이너",[58,93,94,97,100],{},[81,95,96],{},"주요 기능",[81,98,99],{},"Bean 생성, 조회, 관리",[81,101,102,104],{},[67,103,69],{},"의 모든 기능과 부가 기능 지원",[58,106,107,110,113],{},[81,108,109],{},"Bean 로딩 방식",[81,111,112],{},"지연 로딩(Lazy Loading), Bean을 요청할 때 생성",[81,114,115],{},"즉시 로딩(Eager Loading), 기본적으로 시작 시 Bean 생성",[58,117,118,121,128],{},[81,119,120],{},"Bean 저장",[81,122,123,124,127],{},"Bean 정의 정보(",[67,125,126],{},"BeanDefinition",")를 기반으로 Bean 관리",[81,129,130,132],{},[67,131,126],{},"을 기반으로 Bean 생성, 등록, 관리",[58,134,135,138,141],{},[81,136,137],{},"컴포넌트 스캔",[81,139,140],{},"직접 Bean을 등록하는 방식 중심",[81,142,143,146],{},[67,144,145],{},"@ComponentScan"," 대상으로 찾은 클래스를 Bean으로 생성, 등록",[58,148,149,152,155],{},[81,150,151],{},"상속 관계",[81,153,154],{},"기본 인터페이스",[81,156,157,159],{},[67,158,69],{},"를 상속",[58,161,162,165,168],{},[81,163,164],{},"부가 기능",[81,166,167],{},"미지원 또는 제한적",[81,169,170],{},"국제화, 이벤트 발행, AOP, 프록시 패턴, 메시지 자원, 환경 설정 등 지원",[58,172,173,176,179],{},[81,174,175],{},"사용 예",[81,177,178],{},"Spring 2.x 이전에 주로 사용",[81,180,181],{},"Spring 2.x 이후 현재까지 일반적으로 사용",[10,183,185],{"id":184},"bean","Bean",[187,188,185],"h3",{"id":189},"bean-1",[191,192,197],"pre",{"className":193,"code":195,"language":196},[194],"language-text","- 스프링이 관리하는 객체(인스턴스)를 의미 \n- IoC Container가 Bean을 생성하고, 생명주기를 관리 \n- @Componet, @Controller, @Service등의 annotation을 통해 실행 시점에 Bean 자동 생성\n","text",[67,198,195],{"__ignoreMap":199},"",[14,201,202],{},[17,203,204,208],{},[205,206,207],"strong",{},"Bean의 특징",[14,209,210,213],{},[17,211,212],{},"Singleton 방식으로 관리(기본)",[17,214,215],{},"객체 생성, 의존성 주입, 소멸 등 생명주기를 컨테이너가 책임진다.",[217,218,219],"p",{},"IoC Container는 내부적으로 Map과 유사한 Collection을 가지고 있으며\n여기에 Bean 을 등록하고 Bean 호출 시\n생성이 아닌 기존 Bean 을 Input Argument로 전달",[10,221,223],{"id":222},"참고-bean-생성-클래스-정의-annotation","참고 \u002F Bean 생성 클래스 정의 Annotation",[52,225,226,236],{},[55,227,228],{},[58,229,230,233],{},[61,231,232],{},"어노테이션",[61,234,235],{},"용도 \u002F 설명",[76,237,238,248,258,268,278,295,305],{},[58,239,240,245],{},[81,241,242],{},[67,243,244],{},"@Component",[81,246,247],{},"스프링이 클래스를 자동으로 Bean으로 등록합니다.",[58,249,250,255],{},[81,251,252],{},[67,253,254],{},"@Service",[81,256,257],{},"비즈니스 로직을 처리하는 Service 클래스에 사용합니다.",[58,259,260,265],{},[81,261,262],{},[67,263,264],{},"@Repository",[81,266,267],{},"데이터 접근 계층(DAO, Repository)에 사용하며, 데이터베이스 관련 예외를 스프링 예외로 변환해 줍니다.",[58,269,270,275],{},[81,271,272],{},[67,273,274],{},"@Controller",[81,276,277],{},"MVC 패턴의 Controller에 사용하며, 웹 요청을 처리하고 주로 화면(View)을 반환합니다.",[58,279,280,285],{},[81,281,282],{},[67,283,284],{},"@RestController",[81,286,287,288,290,291,294],{},"REST API Controller에 사용하며, 주로 JSON 데이터를 반환합니다. ",[67,289,274],{},"와 ",[67,292,293],{},"@ResponseBody","를 합친 형태입니다.",[58,296,297,302],{},[81,298,299],{},[67,300,301],{},"@Autowired",[81,303,304],{},"필요한 객체(의존성)를 스프링이 자동으로 주입합니다. DI에 사용합니다.",[58,306,307,312],{},[81,308,309],{},[67,310,311],{},"@Bean",[81,313,314,315,318],{},"메서드가 반환하는 객체를 직접 Bean으로 등록합니다. 주로 ",[67,316,317],{},"@Configuration"," 클래스 안의 메서드에 붙입니다.",{"title":199,"searchDepth":320,"depth":320,"links":321},2,[322],{"id":23,"depth":320,"text":24,"children":323},[324],{"id":189,"depth":325,"text":185},3,[327,328,329],"Backend","SPRING","Spring_Container","2026-08-14 10:19:08 +0900","IoC Container는 내부적으로 Map과 유사한 Collection을 가지고 있으며 여기에 Bean 을 등록하고 Bean 호출 시 생성이 아닌 기존 Bean 을 Input Argument로 전달","md",null,"\u002Fbackend\u002Fspring\u002Fspring_container\u002F2026\u002F08\u002F14\u002Fcontainer\u002F",{"layout":336},"post",true,"\u002Fposts\u002Fbackend\u002Fspring\u002Fspring_container\u002Fcontainer",{"title":5,"description":331},"posts\u002FBackend\u002FSPRING\u002FSpring_Container\u002Fcontainer",[],"Z2rf8LyUF-ll3i8kifS9XAyI8RfsTshZtnWmg0gdYOE",1788744786102]