본문 바로가기

Java , Spring/Spring33

컴포넌트 스캔 컴포넌트 스캔과 의존관계 자동 주입 시작하기 지금까지 스프링 빈을 등록할 떄는 자바 코드의 @Bean 또는 XML의 을 통해서 설정 정보에 직접 스프링 빈을 나열했다. 해당 스프링 빈이 수십,수백개가 되면 일일이 등록하기 너무 힘들다 -> 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능 제공 의존 관계도 자동으로 주입하는 @Autowired 기능 제공 @ComponentScan 사용하기 먼저 설정 정보에 @ComponentScan을 추가해준다. @ComponentScan은 @Component가 붙은 클래스를 스캔해서 스프링 빈으로 자동으로 등록해준다. 기존의 설정 정보와 다르게 @Bean을 통해 클래스를 등록할 필요가 없다. 기존 설정 정보에서는 @Bean을 통해 설정 정보를 작성하고, 의존관계도 직접.. 2023. 3. 29.
싱글톤 컨테이너 웹 애플리케이션과 싱글톤 웹 어플리케이션은 보통 여러 고객이 동시에 요청을 한다. -> 다음과 같이 고객이 3번 요청을 하면 객체가 3개가 생성된다. 즉, 메모리 낭비가 심하다 해결방안은 해당 객체가 한개만 생성되고 공유하도록 설계하면 된다. 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 따라서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야한다. public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스턴스가 필요하면 이 static .. 2023. 3. 23.
스프링 컨테이너와 스프링 빈 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 를 스프링 컨테이너라 한다. ApplicationContext 는 인터페이스다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반으로 만들 수 있다. new AnnotationConfigApplicationContext(AppConfig.class); 는 ApplicationContext 인터페이스의 구현체이다. 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 생성 스프링 컨테이너를 생성할 때는 구성 정보를 지정해줘야 한다. 해당 예시에서는 AppConfig.c.. 2023. 3. 22.
Spring Boot (3) 정적, MVC, API 1. 정적 컨텐츠 localhost:8080/hello-static.html 입력 1. hello-static 컨트롤러 존재 X 2. 컨트롤러가 없으므로 resources:static/hello-static.html 전송 2.MVC와 템플릿 엔진 MVC → Model, View, Controller ※요즘은 Controller와 View를 분류하는것이 기본이다. Controller는 비즈니스 로직, 서버 관련 View는 화면과 관련있는일 Controller @Controller public class HelloController { @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String name, Model model) {.. 2023. 1. 30.
Spring Boot (2) Welcome page 만들기 1. src > resources > static > index.html static page(정적 페이지) Welcome Page 2. controller @Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data", "hello!"); return "hello"; } } resources > templates > hello.html 안녕하세요. 손님 @getMapping("value") → localhost:8080/value 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리한다. 스프링 부.. 2023. 1. 30.
Spring Boot (1) 스프링 부트 시작하기 1. https://start.spring.io/ 접속 2023. 1. 30.