본문 바로가기

Back-end/Spring14

[Spring] 서블릿 Hello 서블릿서블릿은 원래 톰캣같은 웹 애플리케이션 서버를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린다음 톰캣서버를 실행해야하는데, 스프링부트는 톰캣서버를 내장하고있어서 편리하게 서블릿 코드를 실행할 수 있다. 스프링부트에서 서블릿을 직접 등록해서 사용하려면package hello.servlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @ServletComponentScan //서블릿 .. 2025. 4. 4.
[Spring] 웹 애플리케이션의 이해 웹 서버, 웹 애플리케이션 서버웹은 HTTP 기반으로 통신한다.웹 서버HTTP 기반으로 동작한다.정적인 리소스를 제공한다정적이란? HTML, CSS, JS, 이미지, 영상 등 웹 애플리케이션 서버(WAS - Web Application Server)HTTP 기반으로 동작웹 서버 기능 + 정적 리소스 제공프로그램 코드를 실행해서 애플리케이션 로직을 실행동적이란? 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC 웹 서버는 정적리소스, WAS는 애플리케이션 로직WAS는 애플리케이션 코드를 실행하는데 더 특화되어있다. WAS는 동적, 정적 리소스를 모두 제공 가능하니까 이런식으로 구성할 수 있다.하지만 WAS에 장애가 발생한다면? 사용자는 에러화면조차 보지 못한다.따라서 정적 리소스.. 2025. 3. 30.
[Spring] 빈 스코프 빈 스코프란이제까지 배운 내용으로는 빈이 생성되고, 스프링 컨테이너에 저장되고, 스프링 컨테이너가 종료될 때까지 유지된다.이건 빈이 기본적으로 싱글톤 스코프로 생성되기 떄문이다.스코프는 빈이 존재할 수 있는 범위를 뜻한다. 빈 스코프를 지정하는 방법은 다음과 같다.@Scope("prototype") @Componentpublic class HelloBean {} @Scope("prototype") @Bean PrototypeBean HelloBean() { return new HelloBean(); } 프로토타입 스코프싱글톤 스코프 빈을 조회하면 항상 같은 빈을 반환한다 반면 프로토타입 스코프를 스프링 컨테이너에 조회하면 스프링 컨테이너는 항상 새로운 인스턴스를 반환한다. 위와같이 프로토타입 스코.. 2025. 3. 11.
[Spring] 빈 생명주기 콜백 빈 생명주기 콜백 시작데이터베이스 커넥션 풀(관계형 데이터베이스 할 때 미리 서버랑 db를 연결한다.) 또는 애플리케이션 시작 시점에 연결을 미리 해두고 종료시점에 모두 종료하는 경우 이를 위한 초기화작업과 종료 작업을 어떻게 할지 알아보자! 여기서 초기화작업이란?단순히 객체를 생성하는게 아니라, 그 객체가 동작까지 하는 것을 말한다. public class NetworkClient { private String url;public NetworkClient() {System.out.println("생성자 호출, url = " + url); connect();call("초기화 연결 메시지");} public void setUrl(String url) { this.url = ur.. 2025. 2. 27.
[Spring] 의존관계 자동 주입 다양한 의존관계 주입 방법생성자 주입생성자를 통해서 의존관계를 주입받는다. 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다.불변, 필수 의존관계에 사용된다. (private final)@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy;@Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRep.. 2025. 2. 27.
[Spring] 컴포넌트 스캔 컴포넌트 스캔과 자동주입 시작하기이제까지는 @bean이나 xml을 통해서 bean을 설정정보에 직접 등록하도록 하였는데, 이렇게 하면 누락문제와 반복문제가 생긴다. 그래서 스프링은 설정정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능과, 의존관계를 자동으로 주입해주는 @Autowired 기능도 제공한다. 컴포넌트 스캔을 사용하려면 @ComponentScan을 설정정보에 붙여주면 된다.  실제 프로젝트에서도 이를 사용하는지 알아보려고@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentSca.. 2024. 11. 29.