1. MVC (Model View Controller)
Controller
클라이언트의 요청에 대해
Model
이 업무 수행을 완료하면 그 결과를 가지고 화면을 생성하도록View
에 전달하는 역할을 하게 되며, 일종의 조정자 담당
2. Annotation
자바에서
Annotation
은 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술. 즉, 프로그램에게 추가적인 정보를 제공해주는meta data
annotation
정의 → class
에 annotation
배치 → 코드가 실행되는 중에 *Reflection
을 이용하여 추가 정보를 획득하여 기능을 실시*Relection?
Reflection
이란 프로그램이 실행 중에 자신의 구조와 동작을 검사, 조사, 수정하는 것 Reflection
을 사용하면 컴파일 타임에 interface, field, method 이름을 알 지 못해도 실행 중에 class, interface, field, method 접근 가능 Annotation
자체는 아무런 동작을 가지지 않는 단순한 표식일 뿐이지만, Reflection
을 이용하면 Annotation
의 적용 여부와 엘리먼트 값을 읽고 처리3. Annotation 종류
@Component
개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 Annotation
@Component public class Student { public Student() { System.out.println("hi"); } }
Component에 추가 정보가 없다면 Class의 이름을 camelCase로 변경한 것이 Bean id로 사용
@Component(value="mystudent") public class Student { public Student() { System.out.println("hi"); }
@Bean
과 다르게@Component
는name
이 아닌value
를 이용해Bean의 이름
을 지정
@Bean
개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만들려할 때 사용되는
Annotation
@Configuration public class ApplicationConfig { @Bean public ArrayList<String> array(){ return new ArrayList<String>(); } }
ArrayList 같은 라이브러리 등을
Bean
으로 등록하기 위해서 별도로 해당 라이브러리 객체를 반환하는 Method를 만들고@Bean Annotation
사용위의 경우
@Bean
에 아무런 값을 지정하지 않았으므로 Method 이름을 camelCase로 변경한 것이 Bean id로 등록
(method 이름이 arrayList()인 경우 arrayList가 Bean id)@Configuration public class ApplicationConfig { @Bean(name="myarray") public ArrayList<String> array(){ return new ArrayList<String>(); } }
위와 같이
@Bean
에 name이라는 값을 이용하면 자신이 원하는 id로 Bean 등록
@RestController
Spring
에서Controller
중View
로 응답하지 않는Controller
를 의미
method
의 반환 결과를JSON
형태로 반환
이 Annotation이 적혀있는 Controller의 method는 HttpResponse로 바로 응답이 가능@Controller와 @RestController
- @Controller : API와 view를 동시에 사용하는 경우에 사용. view(화면) return이 주목적
- @RestController : view가 필요없는 API만 지원하는 서비스에서 사용. @RequestMapping 메서드가 기본적으로 @ResponseBody 의미를 가정. data(json, xml등) return이 주목적
4. Controller 만들기
https://github.com/JuyoungKimmy-Kim/spring-mytest2.git
controller.java
파일 생성main 클래스
Reference
https://goddaehee.tistory.com/203
https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC
스프링부트로 배우는 자바 웹 개발 p90~92