@Controller : 이 아래 클래스는 컨트롤러이다.
@GetMapping("/") : 이 아래 함수는 @GetMapping 속 경로를 입력했을 때 매핑되는 내용이다.
@ResponseBody : 이게 있으면 아래 함수의 body를 그대로 응답으로 전달함. 그래서 리턴되는 내용이 페이지에 나오게 됨. 없으면 에러 페이지만 나옴
@Component : @Component를 붙이면 클래스가 스프링 컨테이너에서 관리하는 빈(Bean)이 된다. 한 번만 생성되어 사용된다. component를 구체적인 역할로 나눈 것이 @Controller, @Service, @Repository으로 모두 @Component에 포함된다.
@Autowired : 필드에 붙이면 필드 주입, 생성자에 붙이면 생성자 주입. 생성자 주입 시 new로 생성하지 않고도 자동으로 @Component가 연결됨.
이 때, 생성자가 하나인 경우 @Autowired는 생략 가능
@Configuration : component 붙이기 애매할 때 configuration 만들고 bean. 이 때, 리턴 타입은 변수 타입과, 함수 이름은 변수명과 동일해야 한다.
@Repository
@RequiredArgsConstructor
public class ArticleRepository {
private final List<Article> articles;
}
@Configuration
public class AppConfig {
@Bean
List<Article> articles(){
return new LinkedList<>();
}
}
@Bean