Spring 4 가 지원 하 는 Java 8 기능
Lambda 표현 식
Spring 의 코드 라 이브 러 리 는 자바 8 의 대량의 함수 식 인 터 페 이 스 를 사 용 했 습 니 다.Lambda 표현 식 은 더욱 깨끗 하고 치밀 한 코드 를 만 드 는 데 사용 할 수 있 습 니 다.함수 식 인터페이스의 대상 이 예상 할 때마다 람 다 표현 식 을 제공 할 수 있 습 니 다.우리 가 계속 하기 전에 먼저 함수 식 인 터 페 이 스 를 배 웁 시다.
함수 식 인터페이스
단일 추상 적 인 방법 이 있 는 인 터 페 이 스 는 함수 식 인터페이스 라 고 불 린 다.다음은 JDK 에서 함수 식 인터페이스의 예 입 니 다.
Comparator 는 추상 적 인 비 대상 방법 만 가 진 함수 입 니 다.비록 두 가지 추상 적 인 방법 을 발 표 했 지만 equals 는 대상 에 대응 하 는 공공 방법 이기 때문에 계수 에서 제외 되 었 다.그 중 하나의 대상 클래스 방법 이 있 고 대상 이 아 닌 방법 이 없 는 인 터 페 이 스 는 함수 식 인터페이스 가 아니다.
하나의 인터페이스 가 추상 적 인 비 대상 클래스 방법 이 있 고 유일한 대상 클래스 방법 을 가 진 비 함수 식 인 터 페 이 스 를 확장 하면 함수 식 인터페이스 라 고 한다.
Spring 프레임 의 함수 식 인터페이스의 예:
@Functional Interface 주 해 는 인터페이스 성명 의 상단 성명 에서 사용 할 수 있 지만 꼭 필요 한 것 은 아 닙 니 다.이 주 해 는 컴 파일 러 가 이 인터페이스 가 효과 적 인 함수 식 인터페이스 인지 아 닌 지 를 검사 하 는 데 사용 된다.만약 우리 가 인터페이스 에서 여러 개의 단일 추상 적 인 방법 을 정의 하려 고 한다 면 컴 파일 러 는 오 류 를 던 질 것 이다.
함수 설명자
인터페이스의 함수 설명 자 는 이 인터페이스의 추상 적 인 방법의 유형 이다.이 방법 유형 은 매개 변수 유형,반환 유형 과 throws 자 구 를 포함한다.
예:
Lambda 표현 식 을 어떻게 작성 합 니까?
Lambda 표현 식 의 문법 은 세 부분 으로 나 눌 수 있 습 니 다.
화살표 하나(C>)
예 1:
//Lambda 표현 식 사용
예 2:
//Lambda 표현 식 사용
Spring 의 반전 함 수 를 통 해 Lambda 표현 식 을 사용 할 수 있 습 니 다.예 를 들 어 주어진 JDBC 연결 목록 을 ConnectionCallback 으로 검색 하면 jdbcTemplate.execute(connection->connection.getCatalog()로 쓸 수 있 습 니 다.
방법 참조
함수 식 인터페이스 도 방법 인용 으로 실현 할 수 있 으 며,인용 방법 이나 구조 함 수 는 호출 되 지 않 습 니 다.방법 인용 은 Lambda 표현 식 과 유사 하지만 방법 인용 은 기 존의 방법 을 말 하 며,Lambda 는 익명 의 방법 을 정의 하고 함수 식 인터페이스 의 인 스 턴 스 로 사용 합 니 다.
자바 8 에 추 가 된 패키지 에는 Lambda 표현 식 과 방법 참조 에 자주 사용 되 는 함수 식 인터페이스 가 포함 되 어 있 습 니 다java.util.function
Date Time API
자바 에 있 는 Date 와 Time 류 에는 여러 가지 문제 가 있 습 니 다.Date 와 Calendar 류 의 가장 큰 문제 중 하 나 는 스 레 드 가 안전 하지 않다 는 것 입 니 다.날짜 처리 코드 를 작성 할 때 개발 자 들 은 병행 문 제 를 특히 조심해 야 한다.Date 클래스 도 국제 화 를 지원 하지 않 기 때문에 시간 대 를 지원 하지 않 습 니 다.개발 자 는 서로 다른 시간 대 를 지원 하기 위해 대량의 코드 를 작성 해 야 한다.
Date 와 Time 류 도 좋 지 않 은 API 디자인 을 보 였 다.java.util.Date 의 달 은 0,일 은 1,년 은 1900 에서 시작 합 니 다.일치 성 이 부족 하 다.현재 Date 와 Time 류 의 다른 몇 가지 문 제 는 자바 8 의 새로운 Date 와 Time API 에서 해결 되 었 습 니 다.
java.time 패키지 에 새 Date 와 Time API 의 중요 한 종 류 는 LocalDate,LocalTime,Zoned DateTime 입 니 다.
LocalDate 와 LocalTime
LocalDate 가 날 짜 를 표시 할 때 기본 형식 은 YYYY-MM-DD 로 시간 이 없습니다.이것 은 불가 변류 다.우 리 는 now()방법 으로 현재 날 짜 를 얻 을 수 있 습 니 다.
새 LocalDate 인 스 턴 스 의 예:
//현재 날짜 가 져 오기
우리 도 년,월,일의 입력 매개 변 수 를 통 해 LocalDate 인 스 턴 스 를 새로 만 들 수 있 습 니 다.
//2016 년 4 월 1 일
LocalTime 은 날짜 가 없 는 시간 을 나타 내 며 변 하지 않 는 다.시간의 기본 형식 은 hh:mm:ss.zzz 입 니 다.
새 LocalTime 인 스 턴 스 의 예:
//현재 시간 가 져 오기
// 18:30:30
기본적으로 LocalDate 와 LocalTime 류 는 기본 시간 대의 시스템 시 계 를 사용 합 니 다.이 클래스 들 은 new()를 다시 불 러 오 는 방법 으로 시간 대 를 수정 하 는 지원 도 제공 합 니 다.zoneid 를 전달 함으로써 특정한 시간 대의 날 짜 를 얻 을 수 있 습 니 다.
예:
//현재 로 컬 날짜 가 르 코 답(인도)
또한,LocalDateTime 은 날짜 와 시간 을 조합 하 였 으 며,기본 형식 은 yyy-MM-ddTHH:MM:ss.zzz.
//현재 날짜 와 시간
// 2016-04-01 13:30
ZonedDateTime
이것 은 시간 대 정 보 를 포함 하 는 날짜 와 시간 을 나타 내 는 가 변 적 이지 않 은 클래스 입 니 다.우 리 는 세계 의 일부 지역 에서 회의 하 는 것 과 같은 특정한 사건 을 나타 내 는 인 스 턴 스 를 사용 할 수 있다.
//현재 시간 사용 시스템 의 시간 과 기본 영역
//현재 시간 에 특정 시간 대의 시스템 시 계 를 사용 합 니 다.
Spring 4 는 자바 8 날짜 와 시간 API 의 일부분 인 모든 클래스 를 지원 하 는 변환 프레임 워 크 를 제공 합 니 다.Spring 4 는 2016-9-10 문자열 을 사용 하여 자바 8 LocalDate 의 인 스 턴 스 로 변환 할 수 있 습 니 다.Spring 4 는@DateTimeFormat 주석 을 통 해 Java 8 Date-Time 필드 를 포맷 하 는 것 도 지원 합 니 다.@DateTimeFormat 은 필드 를 날짜 시간 으로 포맷 해 야 한다 고 설명 합 니 다.
반복 주해
자바 8 이전에 같은 유형의 여러 주석 을 성명 이나 형식(예 를 들 어 하나의 클래스 나 방법)에 추가 하 는 것 은 허용 되 지 않 습 니 다.일종 의 변통 방법 으로서 개발 자 들 은 그것들 을 조합 하여 하나의 용기 주해 로 만들어 야 한다.
예:
반복 주 해 는 우리 가 같은 코드 를 다시 쓸 수 있 도록 용기 주 해 를 명시 적 으로 사용 하지 않 아 도 된다.용기 주 해 는 여기에 사용 되 지 않 았 지만 자바 컴 파일 러 는 두 개의 주 해 를 하나의 용기 로 봉 하 는 것 을 책임 집 니 다.
예:
반복 설명 정의
중복 주 해 를 정의 합 니 다.중복 사용 가능 한@Repeatable 주 해 를 통 해 표시 하거나 중복 주해 형식 계열 속성 을 가 진 주 해 를 만 듭 니 다.
첫 번 째 단계:반복 설명 형식:
2 단계:용기 주해 유형 을 설명 합 니 다.
모든 실현 은 다음 과 같다.
실행 중인 주석 정 보 를 얻 기 위해@Retention(Retention Policy.RUNTIME)주석 을 통 해 설명 하면 됩 니 다.
검색 주해
getAnnotations ByType()또는 getDeclared Annotations ByType()은 주석 반사 API 에 접근 하 는 새로운 방법 입 니 다.
주 해 는 용기 주 해 를 통 해 getAnnotation()이나 getDeclared Annotation()으로 접근 할 수 있 습 니 다.
결론.
Spring 4 는 자바 6 과 자바 7 에서 도 실행 할 수 있다.Spring 은 함수 식 인 터 페 이 스 를 많이 사 용 했 기 때문에 자바 8 과 Spring 4 를 사용 하면 Lambda 표현 식 과 함수 식 인 터 페 이 스 를 사용 할 수 있 고 더욱 깨끗 하고 치밀 한 코드 를 쓸 수 있 습 니 다.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GCE에서 Cloud NAT를 통한 SocketTimeoutException하기 기사에서 구축한 어플리케이션의 운용중에 발생한 장해와 그 대응에 대해 기술합니다. 외부 API 연결 시 IP 제한이 걸려 CloudNAT에서 출구 IP를 고정하면서 외부 API에 연결합니다. 외부 API는 초당...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.