Spring

    [Spring] 스프링 핵심 원리 기본편 9. 빈 스코프

    9. 빈 스코프 빈 스코프란? 스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어 스프링 컨테이너가 종료될 때까지 유지 스프링 빈이 싱글톤 스코프로 생성되기 때문 스프링은 다음과 같은 스코프 지원 “싱글톤”: 기본 스코프, 스크링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 “프로토타입”: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 “웹 관련 스코프” request: 웹 요청이 들어오고 나갈 때 유지되는 Q스코프 session: 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 프로토타입 스코프 싱글톤 스코프와 달리 스프링 컨테이너에 조회하면 ..

    [스프링 부트] 파일 업로드 시 static 정적 경로 설정

    파일 업로드를 할 때 저장하고 싶은 위치는 src\main\static\resources\upload 인데 자꾸 src\main\webapp\static\resources\upload 에 저장되는 문제가 있었다. 해결은 아직 하지 못했다.. http://localhost:8080/resources/upload/test.png 라고 주소창에 검색하면 static\resources\upload에 있는 파일이 잘 뜨는데 업로드할 때 주소 설정이 잘못된 것인지 파일 업로드만 하면 webapp으로 간다 뭔가 설정이 잘못된 것 같은데 아직 해결 방안을 찾지 못함 @PostMapping("/regist") public String doRegist(@ModelAttribute User user, @RequestPart..

    [Spring] 스프링 핵심 원리 기본편 - 7. 의존관계 자동 주입

    7. 의존관계 자동 주입 다양한 의존관계 주입 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 특징 생성자 호출 시점에 딱 1번만 호출되는 것이 보장됨 불변, 필수 의존관계에 사용 불변: 생성자 외에 외부에서 의존관계를 수정할 수 없음 필수: final, 꼭 값이 있어야 함 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동으로 지정됨 생성자 주입은 빈을 등록하면서 의존관계 주입도 같이 일어남 - 생성자를 호출하게 되기 때문에 수정자 주입 setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해 주입 특징 선택, 변경 가능성이 있는 의존관계에 사용 참고: @Autowired(required = false) → 주입할 대상이 없어도 동작하게 할 ..

    [Spring] 스프링 핵심 원리 기본편 - 6. 컴포넌트 스캔

    6. 컴포넌트 스캔 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan을 설정 정보에 붙여주면 된다 참고: @Configuration이 붙은 설정 정보도 자동으로 등록되기 때문에 excludeFilters를 사용해서 컴포넌트 스캔 대상에서 제외 @ComponentScan은 @Component가 붙은 모든 클래스를 스프링 빈으로 등록 스프링 빈의 기본 이름은 클래스명을 사용하되, 맨 앞글자만 소문자를 사용 MemberServiceImpl 클래스 → memberServiceImpl 빈 이름 직접 지정도 가능 → @Component(”memberServiceImpl”) @Autowired 의존관계 자동 주입 생성자에 @Autowired를 지정하면 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입..

    [Spring] 스프링 핵심 원리 기본편 - 4. 스프링 컨테이너와 빈

    4. 스프링 컨테이너와 빈 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext : 스프링 컨테이너, 인터페이스 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다 @Bean 이 붙은 애들을 하나씩 호출 → 메서드 이름을 빈 이름으로, 반환하는 객체를 빈 객체로 등록 빈 이름은 항상 다른 이름을 부여 스프링 빈 의존관계 설정 설정 정보(AppcConfig)를 참고해서 의존관계 주입 스프링은 빈을 생성하고 의존관계를 주입하는 단계가 나누어져 있음 → 자바 코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한꺼번에 처리 컨테이너에 등..

    [Spring] 제어 역전 IoC와 의존성 주입 DI

    IoC와 DI 제어 역전(IoC) 일반적인 자바 개발: 객체 선언 > 의존성 생성 > 객체에서 제공 일련의 작업들을 개발자가 직접 제어함 제어 역전: 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부에 위임 ‘외부’: 스프링 컨테이너(Spring Container) 스프링에서 제어 역전 Bean: 스프링에서의 객체 Container: Bean의 인스턴스화 조립, 관리의 역할, 사용 소멸에 대한 처리 담당 객체 생성 의존성 객체 주입: 제어권을 스프링에게 위임하여 스프링이 만들어놓은 객체를 주입 의존성 객체 메소드 호출 스프링 컨테이너가 객체를 만드는 시기: 컨테이너가 만들어질 때 필요한 객체를 모두 생성 cf. lazy-init: getBean을 할 때마다 객체가 생성 기본: 싱글톤 패턴 s..

출처: https://gmnam.tistory.com/157 [Voyager:티스토리]