2. 타임리프에서 제공하는 문법
폼에서 유용하게 사용할 수 있음
• ${@myBean.doSomething()} - 스프링 빈 호출
• th:object=${인스턴스} - 상위 태그에 걸어두면 하위태그서 속성 쉽게 사용
• th:field=${값} - 폼 종류의 태그에 걸어두면 id, name, value 자동 완성
• checkbox 등의 태그에 히든 타입으로 값을 만들어줌
• _네임 이런식으로 만들어줘서 파라미터로 _네임만 들어오면 네임에 대해서
false로 체크해준다.
3. @ModelAttribute 새 사용법
Parameter말고 Method 위에??
@ModelAttribute("regions")
public Map<String, String> regions() {
Map<String, String> regions = new LinkedHashMap<>();
regions.put("SEOUL", "서울");
regions.put("BUSAN", "부산");
regions.put("JEJU", "제주");
return regions;
}
메서드 위에 적용하면 해당 클래스에 있는 컨트롤러들이 전역적으로 사용할 수 있게 된다.
4. @ModelAttribute 어노테이션 간단히 보기
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ModelAttribute {}
Target 쪽에 범위가 정해져있다.
PARAMETER, METHOD
대체 어노테이션이 뭐길래 저거 하나 달았다고, 온갖 편의를 누릴 수 있을까..
5. 어노테이션 간단히 이해해보자
사전적 정의
• 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술
• 메타 데이터 역할 (데이터를 위한 데이터)
@Override
@Deprecated
@FunctionalInterface
우리가 일반적으로 봤던 어노테이션들,
정말 주석처럼만 사용됐다.
6. 어노테이션 간단히 이해해보자
리플렉션과 함께 적극 활용되기 시작
리플렉션(Reflection)을 활용하여 어노테이션으로 다음과 같이 이용할 수 있다.
• 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공
• 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
• 실행(런타임)시 특정 기능을 실행하도록 정보 제공
7. 어노테이션 간단히 이해해보자
그럼 또 리플렉션은 무엇일까?
• 런타임 시에 클래스의 메타 정보를 얻는 기능
• 클래스가 가진 필드, 생성자, 메소드, 어노테이션 정보를 구할 수 있다.
• 이를 통해 스프링에서 적극 활용하고 있는 것이다!
1. 어노테이션 정의
2. 타겟에 어노테이션 배치
3. 리플렉션을 통해 이 정보를 얻어 기능 실시