코드를 보다보면 @Override처럼 @가 붙은걸 볼수있는데 자바 @의 의미는?
어노테이션(annotation) 이라고 한다
기존 자바 웹애플리케이션은 프로그램의 전체 및 각 레이어별 구성과 설정값들을 외부의 XML 설정파일에 명시하는 선언적인 프로그래밍 방식을 사용한다.
이것의 장점은 변경사항을 코드가 아닌 외부설정 파일에 분리하기때문에 쉽게 컴파일없이 적용할 수 있다
단점은 프로그램 작성을 위해 매번 많은 설정파일을 작성해야 한다.
어노테이션을 사용하면 데이터에 대한 유효성 검사조건을 Model 클래스에 직접 명시하여 쉽게 파악할 수 있고, 코드의 양도 줄어든다
어노테이션의 용도는 문서화, 컴파일러 체크, 코드 분석을 위한 용도로 사용된다. 컴파일 타임에 에러를 발생시켜주어 위험요소 경고 및 확인목적으로 사용한다. 또 데이터에 대해 설명하는 데이터인 '메타 데이터' 로서의 용도로도 쓰인다.
예를들어 @Override에서 수퍼클래서에 해당하는 메소드가 없으면 컴파일러가 인지하고 에러를 발생시킨다.
스프링은 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크이다.
자바 객체와 라이브러리들을 관리해주며, 톰캣과 같은 WAS 가 내장되어 있어 자바 웹 어플리케이션을 구동할 수 있다.
경량 컨테이너로 자바 객체를 직접 Spring 안에서 관리한다. 객체의 생성 및 소멸과 같은 생명주기를 관리하며, Spring 컨테이너에서 필요한 객체를 가져와 사용한다.
가장 큰 특징은 IOC와 DI가 많이 언급된다.
제어의 역전 (IOC, Inversion Of Control)
스프링에게 제어를 위임하여 스프링이 만든 객체를 주입 -> 의존성 객체의 메소드 호출
구조이다.의존성 주입(DI, Dependency Injection)
스프링 부트(Spring Boot)는 스프링(Spring)을 더 쉽게 이용하기 위한 도구라고 볼 수 있다. 스프링 이용하여 개발을 할 때, 이것저것 세팅을 해야 될 요소들이 많다. 여러가지를 세팅해야되는 진입 장벽이 존재하여 Spring 을 처음 배우려는 사람들은 중도에 그만두는 경우가 많다고 한다. Spring Boot는 매우 간단하게 프로젝트를 설정할 수 있게 하여, Spring 개발을 조금 더 쉽게 만들어주는 역할을 하고 있다
무료 스프링 입문
스프링을 설치하고 인텔리제이에 들어가보면 내가 설치하기 원했던 라이브러리보다 훨씬 더 많이 설치가 되어있는데 이건 라이브러리들이 의존관계로 인해 붙어오기 때문
예전에는 톰캣처럼 웹서버랑 분리되어있었는데 요즘은 딸려나온다.
실무에서는 sys.out.print를 쓰지않고 log를 쓴다
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
resources/templates/hello.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
김영한 선생님의 스프링 강의를 예전부터 들을 계획은 있었다. 원래는 알고리즘 공부를 하며 백준 플래티넘을 달성하고 그 다음으로 수강하려고 계획했는데 우연히 인프런에 들어가보니 김영한 선생님의 스프링 강의들이 새 DB 강의가 나온 기념으로 전부 할인하고 있었다.
6/9 까지인 이번 할인을 놓치면 복학 전까지 할인을 못 받을것같아서 강의를 구매하려던 찰나, 그래도 50만원이 넘는 금액이기에 무작정 구매하기보다는 일단 어떤 강의인지 조금은 알아보고 구매하려고 급하게 공부를 시작했다.
아직은 뭐가 뭔지 잘 모르겠지만 열심히 해봐야겠다.