SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
홍석주
타임리프
스프링 통합과 폼&어노테이션
타임리프에서 제공하는 문법
폼에서 유용하게 사용할 수 있음
• ${@myBean.doSomething()} - 스프링 빈 호출

• th:object=${인스턴스} - 상위 태그에 걸어두면 하위태그서 속성 쉽게 사용

• th:field=${값} - 폼 종류의 태그에 걸어두면 id, name, value 자동 완성

• checkbox 등의 태그에 히든 타입으로 값을 만들어줌

• _네임 이런식으로 만들어줘서 파라미터로 _네임만 들어오면 네임에 대해서
false로 체크해준다.
@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;
}
메서드 위에 적용하면 해당 클래스에 있는 컨트롤러들이 전역적으로 사용할 수 있게 된다.
@ModelAttribute 어노테이션 간단히 보기
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ModelAttribute {}
Target 쪽에 범위가 정해져있다.
PARAMETER, METHOD
대체 어노테이션이 뭐길래 저거 하나 달았다고, 온갖 편의를 누릴 수 있을까..
어노테이션 간단히 이해해보자
사전적 정의
• 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술
• 메타 데이터 역할 (데이터를 위한 데이터)
@Override
@Deprecated
@FunctionalInterface
우리가 일반적으로 봤던 어노테이션들,
정말 주석처럼만 사용됐다.
어노테이션 간단히 이해해보자
리플렉션과 함께 적극 활용되기 시작
리플렉션(Reflection)을 활용하여 어노테이션으로 다음과 같이 이용할 수 있다.
• 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공
• 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
• 실행(런타임)시 특정 기능을 실행하도록 정보 제공
어노테이션 간단히 이해해보자
그럼 또 리플렉션은 무엇일까?
• 런타임 시에 클래스의 메타 정보를 얻는 기능
• 클래스가 가진 필드, 생성자, 메소드, 어노테이션 정보를 구할 수 있다.
• 이를 통해 스프링에서 적극 활용하고 있는 것이다!
1. 어노테이션 정의
2. 타겟에 어노테이션 배치
3. 리플렉션을 통해 이 정보를 얻어 기능 실시
어노테이션 간단히 이해해보자
실습해보기
어노테이션 간단히 이해해보자
옵션들 살펴보기
어노테이션 간단히 이해해보자
실습해보기
어노테이션 간단히 이해해보자
실습해보기
어노테이션 간단히 이해해보자
실습해보기 - 오류 발생
메서드가 private라 오류뜨는게 당연지사!
어노테이션 간단히 이해해보자
실습해보기 - setAccessible(true)로 접근자도 해제
만능같은 어노테이션도 주의할 점
• 지나친 사용은 성능 이슈를 야기할 수 있음.

• 컴파일 타임에 확인되지 않고 런타임 시 문제가 생길 수 있다.

• 접근 지시자를 무시한다. (캡슐화한 의미가 무색해질 수도)
적절한 타이밍에 사용할 수 있도록 실력을 기르자!

Mais conteúdo relacionado

Mais procurados

[Swift] Subscripts
[Swift] Subscripts[Swift] Subscripts
[Swift] SubscriptsBill Kim
 
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법홍준 김
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Park Jonggun
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Park Jonggun
 
String Searching Algorithms
String Searching AlgorithmsString Searching Algorithms
String Searching Algorithmsskku_npc
 
Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Park Jonggun
 
2012 Ds D2 03 Pdf
2012 Ds D2 03 Pdf2012 Ds D2 03 Pdf
2012 Ds D2 03 Pdfkd19h
 
[Algorithm] Binary Search
[Algorithm] Binary Search[Algorithm] Binary Search
[Algorithm] Binary SearchBill Kim
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍Young-Beom Rhee
 
Javascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operatorJavascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operatorYoung-Beom Rhee
 
2012 Ds D2 03
2012 Ds D2 032012 Ds D2 03
2012 Ds D2 03chl132435
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Circulus
 
[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)jusingame
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차Han Sung Kim
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기Yong Joon Moon
 

Mais procurados (20)

7주차 스터디
7주차 스터디7주차 스터디
7주차 스터디
 
[Swift] Subscripts
[Swift] Subscripts[Swift] Subscripts
[Swift] Subscripts
 
Cp2 w5
Cp2 w5Cp2 w5
Cp2 w5
 
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
 
DM_02
DM_02DM_02
DM_02
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1
 
(닷넷, C#기초교육)C#선택적인수, 명명된 인수
(닷넷, C#기초교육)C#선택적인수, 명명된 인수(닷넷, C#기초교육)C#선택적인수, 명명된 인수
(닷넷, C#기초교육)C#선택적인수, 명명된 인수
 
String Searching Algorithms
String Searching AlgorithmsString Searching Algorithms
String Searching Algorithms
 
Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자
 
2012 Ds D2 03 Pdf
2012 Ds D2 03 Pdf2012 Ds D2 03 Pdf
2012 Ds D2 03 Pdf
 
[Algorithm] Binary Search
[Algorithm] Binary Search[Algorithm] Binary Search
[Algorithm] Binary Search
 
이산수학02
이산수학02이산수학02
이산수학02
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
 
Javascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operatorJavascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operator
 
2012 Ds D2 03
2012 Ds D2 032012 Ds D2 03
2012 Ds D2 03
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체
 
[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)[C++]함수템플릿(Function template)
[C++]함수템플릿(Function template)
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기
 

Semelhante a 타임리프 폼과 어노테이션.Key

2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)JiandSon
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Circulus
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개Dong Jun Kwon
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613Yong Joon Moon
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)상욱 송
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선daewon jeong
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304Yong Joon Moon
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리ETRIBE_STG
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oopYoung-Beom Rhee
 
Es2015 Simple Overview
Es2015 Simple OverviewEs2015 Simple Overview
Es2015 Simple OverviewKim Hunmin
 
HTML Form과 배열
HTML Form과 배열HTML Form과 배열
HTML Form과 배열Yoonwhan Lee
 

Semelhante a 타임리프 폼과 어노테이션.Key (14)

2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 
Hacosa js study 7th
Hacosa js study 7thHacosa js study 7th
Hacosa js study 7th
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop
 
4. stack
4. stack4. stack
4. stack
 
C review
C  reviewC  review
C review
 
Es2015 Simple Overview
Es2015 Simple OverviewEs2015 Simple Overview
Es2015 Simple Overview
 
HTML Form과 배열
HTML Form과 배열HTML Form과 배열
HTML Form과 배열
 

Mais de Seokju Hong

API 문서화.pdf
API 문서화.pdfAPI 문서화.pdf
API 문서화.pdfSeokju Hong
 
트랜잭션_인덱싱.pdf
트랜잭션_인덱싱.pdf트랜잭션_인덱싱.pdf
트랜잭션_인덱싱.pdfSeokju Hong
 
자바8정리.pdf
자바8정리.pdf자바8정리.pdf
자바8정리.pdfSeokju Hong
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdfSeokju Hong
 
Mvc 패턴
Mvc 패턴Mvc 패턴
Mvc 패턴Seokju Hong
 

Mais de Seokju Hong (7)

API 문서화.pdf
API 문서화.pdfAPI 문서화.pdf
API 문서화.pdf
 
트랜잭션_인덱싱.pdf
트랜잭션_인덱싱.pdf트랜잭션_인덱싱.pdf
트랜잭션_인덱싱.pdf
 
자바8정리.pdf
자바8정리.pdf자바8정리.pdf
자바8정리.pdf
 
DB Index.pdf
DB Index.pdfDB Index.pdf
DB Index.pdf
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdf
 
validation.pdf
validation.pdfvalidation.pdf
validation.pdf
 
Mvc 패턴
Mvc 패턴Mvc 패턴
Mvc 패턴
 

타임리프 폼과 어노테이션.Key