Spring 4 가 지원 하 는 Java 8 기능

7930 단어 spring4java8
Spring 프레임 워 크 4 는 자바 8 언어 와 API 기능 을 지원 합 니 다.본 논문 에서 우 리 는 Spring 4 가 새로운 자바 8 을 지원 하 는 기능 에 중점 을 둘 것 이다.가장 중요 한 것 은 Lambda 표현 식 입 니 다.방법 참조,JSR-310 의 날짜 와 시간,그리고 중복 설명 이 가능 합 니 다.
Lambda 표현 식
Spring 의 코드 라 이브 러 리 는 자바 8 의 대량의 함수 식 인 터 페 이 스 를 사 용 했 습 니 다.Lambda 표현 식 은 더욱 깨끗 하고 치밀 한 코드 를 만 드 는 데 사용 할 수 있 습 니 다.함수 식 인터페이스의 대상 이 예상 할 때마다 람 다 표현 식 을 제공 할 수 있 습 니 다.우리 가 계속 하기 전에 먼저 함수 식 인 터 페 이 스 를 배 웁 시다.
함수 식 인터페이스
단일 추상 적 인 방법 이 있 는 인 터 페 이 스 는 함수 식 인터페이스 라 고 불 린 다.다음은 JDK 에서 함수 식 인터페이스의 예 입 니 다.



Comparator 는 추상 적 인 비 대상 방법 만 가 진 함수 입 니 다.비록 두 가지 추상 적 인 방법 을 발 표 했 지만 equals 는 대상 에 대응 하 는 공공 방법 이기 때문에 계수 에서 제외 되 었 다.그 중 하나의 대상 클래스 방법 이 있 고 대상 이 아 닌 방법 이 없 는 인 터 페 이 스 는 함수 식 인터페이스 가 아니다.

하나의 인터페이스 가 추상 적 인 비 대상 클래스 방법 이 있 고 유일한 대상 클래스 방법 을 가 진 비 함수 식 인 터 페 이 스 를 확장 하면 함수 식 인터페이스 라 고 한다.

Spring 프레임 의 함수 식 인터페이스의 예:


@Functional Interface 주 해 는 인터페이스 성명 의 상단 성명 에서 사용 할 수 있 지만 꼭 필요 한 것 은 아 닙 니 다.이 주 해 는 컴 파일 러 가 이 인터페이스 가 효과 적 인 함수 식 인터페이스 인지 아 닌 지 를 검사 하 는 데 사용 된다.만약 우리 가 인터페이스 에서 여러 개의 단일 추상 적 인 방법 을 정의 하려 고 한다 면 컴 파일 러 는 오 류 를 던 질 것 이다.


함수 설명자
인터페이스의 함수 설명 자 는 이 인터페이스의 추상 적 인 방법의 유형 이다.이 방법 유형 은 매개 변수 유형,반환 유형 과 throws 자 구 를 포함한다.
예:

Lambda 표현 식 을 어떻게 작성 합 니까?
Lambda 표현 식 의 문법 은 세 부분 으로 나 눌 수 있 습 니 다.
화살표 하나(C>)
  • 매개 변수 목록:하나의 Lambda 표현 식 은 0 개 이상 의 매개 변 수 를 포함 할 수 있 습 니 다.()→{System.out.println("No arguments");}(String arg) → { System.out.println(“ One argument : ”+arg); } (String arg1, Integer arg2) → { System.out.println(“Two arguments : ”+arg1+” and ”+arg2); }
  • 4.567917.표현 식 체:하나의 표현 식 이나 코드 블록 일 수 있 습 니 다.단일 표현 식 은 간단하게 값 을 구하 고 되 돌아 갑 니 다.예:(String arg)→{System.out.println("One argument:"+arg);}만약 표현 식 체(Body)에 구문 블록 이 존재 한다 면,그것 은 방법 체 로 판정 되 고,블록 이 실 행 된 후 숨겨 진 반환 문 구 는 호출 자 에 게 제어 권 을 넘 겨 줍 니 다이제 Lambda 표현 식 을 어떻게 사용 하 는 지 봅 시다.
    예 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 표현 식 과 함수 식 인 터 페 이 스 를 사용 할 수 있 고 더욱 깨끗 하고 치밀 한 코드 를 쓸 수 있 습 니 다.
    이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

    좋은 웹페이지 즐겨찾기