Spring 4에서 지원하는 Java8 기능에 대한 자세한 소개(그림)
Spring Framework 4는 Java 8 언어와 API 기능을 지원합니다. 이 기사에서는 새로운 Java 8 기능에 대한 Spring 4의 지원에 중점을 둡니다. 가장 중요한 것은 LambdaExpression, MethodReference, JSR-310 날짜 및 시간, 반복 가능한 주석입니다. 아래 편집기를 사용하여 살펴보겠습니다
Spring Framework 4는 Java 8 언어 및 API 기능을 지원합니다. 이 기사에서는 새로운 Java 8 기능에 대한 Spring 4의 지원에 중점을 둡니다. 가장 중요한 것은 람다 표현식, 메소드 참조, JSR-310 날짜 및 시간, 반복 가능한 주석입니다.
람다 표현식
Spring의 코드 베이스는 Java 8의 수많은 기능적 인터페이스를 사용하며, 람다 표현식을 사용하면 더욱 깔끔하고 컴팩트한 코드를 작성할 수 있습니다. 기능적 인터페이스의 객체가 필요할 때마다 람다 표현식을 제공할 수 있습니다. 더 진행하기 전에 먼저 기능적 인터페이스에 대해 알아보겠습니다.
기능적 인터페이스
단일 추상 메소드를 갖는 인터페이스를 기능적 인터페이스라고 합니다. 다음은 JDK의 기능적 인터페이스의 몇 가지 예입니다.
비교기는 하나의 추상화일 뿐입니다. 비객체 메소드. 두 개의 추상 메소드를 선언했지만, 해당 객체에 해당하는 공개 메소드이기 때문에 같음은 계산에서 제외됩니다. 객체 클래스 메서드가 하나 있고 객체가 아닌 메서드가 없는 인터페이스는 기능적 인터페이스가 아닙니다.
인터페이스가 추상적인 비객체 클래스 메소드를 갖고 고유한 객체 클래스 메소드를 사용하여 비기능 인터페이스에서 확장되는 경우 기능적 인터페이스라고 합니다.
Spring 프레임워크의 기능적 인터페이스 예:
@FunctionalInterface 주석 인터페이스 선언의 최상위 선언에서 사용할 수 있지만 필수는 아닙니다. 이 주석은 컴파일러에서 인터페이스가 유효한 기능 인터페이스인지 여부를 감지하는 데 사용됩니다. 인터페이스에서 여러 개의 단일 추상 메서드를 정의하려고 하면 컴파일러에서 오류가 발생합니다.
함수 설명자
인터페이스의 함수 설명자는 인터페이스를 추상화한 것입니다. 방법의 유형입니다. 메소드 유형에는 매개변수 유형, 반환 유형 및 throws 절이 포함됩니다.
예:
람다 식 작성 방법
람다 식의 구문은 세 가지로 나눌 수 있습니다. 부분:
화살표(–>)
매개변수 목록: 람다 표현식에는 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); }
로그인 후 복사표현식 본문: 단일 표현식 또는 코드 블록일 수 있습니다. 단일 표현식이 평가되어 반환됩니다. 예: (String arg) → { System.out.println(“ 인수 1개 : ”+arg) } 표현식 본문(Body)에 구문 블록이 있으면 메서드 본문으로 판단하고 이후 블록이 실행됩니다. 숨겨진 return 문은 호출자에게 제어권을 부여합니다.
이제 람다 표현식을 사용하는 방법을 살펴보겠습니다.
예 1:
// 람다 식 사용
예 2:
//람다 식 사용
Spring의 콜백 함수를 통해 Lambda 표현식을 사용할 수 있습니다. 예를 들어, 주어진 JDBC 연결 목록을 검색하기 위해 ConnectionCallback을 사용하는 것은 다음 명령문으로 작성할 수 있습니다: jdbcTemplate.execute(connection -> Connection.getCatalog())
Method Reference
함수형 인터페이스는 메소드 또는 생성자를 참조하지만 호출하지는 않는 메소드 참조를 사용하여 구현할 수도 있습니다. 메서드 참조는 람다 식과 유사하지만 메서드 참조는 기존 클래스의 메서드를 참조하는 반면 람다는 익명 메서드를 기능 인터페이스의 인스턴스로 정의합니다.
Java 8의 새 패키지에는 Lambda 표현식 및 메서드 참조에 일반적으로 사용되는 기능 인터페이스인 java.util.function이 포함되어 있습니다.
Date Time API
Java의 기존 날짜 및 시간 클래스에는 여러 가지 문제가 있습니다. Date 및 Calendar 클래스의 가장 큰 문제 중 하나는 스레드로부터 안전하지 않다는 것입니다. 개발자는 날짜 처리 코드를 작성할 때 동시성 문제에 특히 주의해야 합니다. Date 클래스도 국제화를 지원하지 않으므로 시간대를 지원하지 않습니다. 개발자는 다양한 시간대를 지원하기 위해 많은 코드를 작성해야 합니다.
날짜 및 시간 클래스도 API 디자인이 좋지 않습니다. java.util.Date의 월은 0부터 시작하고 일은 1부터 시작하며 연도는 1900부터 시작됩니다. 일관성이 부족합니다. 날짜 및 시간 클래스와 관련된 이러한 문제와 기타 여러 문제는 이제 Java 8의 새로운 날짜 및 시간 API에서 해결되었습니다.
java.time 패키지에 있는 새로운 날짜 및 시간 API의 중요한 클래스는 LocalDate, LocalTime 및 ZonedDateTime입니다.
LocalDate 및 LocalTime
날짜를 나타낼 때 LocalDate의 기본 형식은 YYYY-MM-DD이며 시간은 없습니다. 이것은 불변 클래스입니다. now() 메소드를 사용하여 현재 날짜를 얻을 수 있습니다.
새 LocalDate 인스턴스 생성 예:
//현재 날짜 가져오기
연도, 월 및 날짜를 입력할 수도 있습니다. day 새 LocalDate 인스턴스를 생성하는 매개변수입니다.
// 2016년 4월 1일
LocalTime은 날짜가 없는 시간을 나타내며 변경되지 않습니다. 시간의 기본 형식은 hh:mm:ss.zzz입니다.
새 LocalTime 인스턴스 생성 예:
//현재 시간 가져오기
// 18:30:30
기본적으로 LocalDate 및 LocalTime 클래스는 기본 시간대의 시스템 시계를 사용합니다. 또한 이러한 클래스는 overloaded new() 메서드를 통해 시간대 수정을 지원합니다. zoneid를 전달하면 특정 시간대의 날짜를 얻을 수 있습니다.
예:
// 콜카타(인도)의 현재 현지 날짜
또한 날짜를 결합하는 LocalDateTime 클래스가 있습니다. 및 시간의 경우 기본 형식은 yyyy-MM-ddTHH:MM:ss.zzz·입니다.
//현재 날짜 및 시간
// 2016-04-01 13:30
ZonedDateTime
타임존 정보를 포함한 날짜와 시간을 표현하는 데 사용되는 불변 클래스입니다. 이 클래스의 인스턴스를 사용하여 세계 일부 지역의 컨퍼런스와 같은 특정 이벤트를 나타낼 수 있습니다.
// 현재 시간은 시스템 시간과 기본 시간대를 사용합니다
// 현재 시간은 특정 시간대의 시스템 시계를 사용합니다
Spring 4는 Java 8 날짜 및 시간 API의 일부인 모든 클래스를 지원하는 변환 프레임워크를 제공합니다. Spring 4는 2016-9-10 String을 가져와 Java 8 LocalDate의 인스턴스로 변환할 수 있습니다. Spring 4는 @DateTimeFormat 주석을 통해 Java 8 날짜-시간 필드 형식 지정도 지원합니다. @DateTimeFormat은 필드가 날짜 시간으로 형식화되어야 함을 선언합니다.
중복 주석
Java 8 이전에는 동일한 유형의 여러 주석을 선언이나 유형(예: 클래스 또는 방법)은 허용되지 않습니다. 해결 방법으로 개발자는 이를 단일 컨테이너 주석으로 결합해야 했습니다.
예:
중복 주석을 사용하면 컨테이너 주석을 명시적으로 사용하지 않고도 동일한 코드를 다시 작성할 수 있습니다. 여기서는 컨테이너 주석이 사용되지 않지만 Java 컴파일러는 두 주석을 컨테이너로 패키징하는 역할을 담당합니다.
예:
반복 주석 정의
반복 주석을 정의하거나, 재사용 가능한 @Repeatable 주석으로 주석을 달거나, 반복 주석 유형 시리즈 속성 으로 주석을 생성합니다.
1단계: 반복 주석 유형 선언:
2단계 단계: 컨테이너 주석 유형을 선언합니다.
전체 구현은 다음과 같습니다.
런타임에 주석을 얻으려면 자세한 내용은 @Retention(RetentionPolicy.RUNTIME)으로 주석을 추가하세요.
주석 검색
getAnnotationsByType() 또는 getDeclaredAnnotationsByType()은 주석에 액세스하기 위한 Reflection API의 새로운 메서드입니다.
주석은 getAnnotation() 또는 getDeclaredAnnotation()을 사용하여 컨테이너 주석을 통해 액세스할 수도 있습니다.
결론
Spring 4는 Java 6 및 Java 7에서도 실행됩니다. Spring은 Java 8 및 Spring 4와 같이 많은 기능적 인터페이스를 사용하므로 Lambda 표현식과 기능적 인터페이스를 사용하고 더 깔끔하고 컴팩트한 코드를 작성할 수 있습니다.
위 내용은 Spring 4에서 지원하는 Java8 기능에 대한 자세한 소개(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java8은 1년 전 날짜를 계산하기 위해 minus() 메소드를 사용하여 1년 전 또는 1년 후 날짜를 계산합니다. packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[ ]args ){LocalDatetoday=LocalDate.now();LocalDatepreviousYear=today.minus(1,ChronoUni

Java8에서 일주일 후 날짜를 계산하는 방법 이 예에서는 일주일 후 날짜를 계산합니다. LocalDate 날짜에는 시간 정보가 포함되어 있지 않습니다. 해당 plus() 메서드는 일, 주 및 월을 추가하는 데 사용됩니다. ChronoUnit 클래스는 이러한 시간 단위를 선언합니다. LocalDate도 불변형이므로 반환 후 값을 할당하려면 변수를 사용해야 합니다. packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo08{publicstaticvoidmain(String[

Java8의 Clock 클래스 Java8은 현재 타임스탬프 또는 현재 시간대의 날짜 및 시간 정보를 얻기 위해 Clock 클래스를 추가합니다. 이전에는 System.currentTimeInMillis() 및 TimeZone.getDefault()를 사용했지만 Clock으로 대체할 수 있습니다. packagecom.shxt.demo02;importjava.time.Clock;publicclassDemo10{publicstaticvoidmain(String[]args){//현재 시간 기준을 반환합니다.

Java8에서 현재 타임스탬프를 가져옵니다. Instant 클래스에는 아래와 같이 현재 타임스탬프를 반환하는 정적 팩터리 메서드 now()가 있습니다. packagecom.shxt.demo02;importjava.time.Instant;publicclassDemo16{publicstaticvoidmain(String[]args) {Instanttimestamp=Instant.now();System.out.println("Thisinstant의 값은 무엇입니까"+timestamp.t

Java 8에서 시간대 처리 Java 8은 날짜와 시간을 분리할 뿐만 아니라 시간대도 분리합니다. 이제 특정 시간대를 처리하는 ZoneId 및 특정 시간대의 시간을 나타내는 ZoneDateTime과 같은 일련의 별도 클래스가 있습니다. 이는 Java8 이전의 GregorianCalendar 클래스에 의해 수행되었습니다. 다음 예에서는 이 시간대의 시간을 다른 시간대의 시간으로 변환하는 방법을 보여줍니다. packagecom.shxt.demo02;importjava.time.LocalDateTime;importjava.time.ZoneId;importjava.time.ZonedDateT

사전 정의된 형식화 도구를 사용하여 Java 8에서 날짜를 구문 분석하거나 형식화하는 방법 packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;publicclassDemo17{publicstaticvoidmain(String[]args){StringdayAfterTommorrow="20180205 "; LocalDateformatted=LocalDate.parse

Java8에서 오늘 날짜 가져오기 Java8의 LocalDate는 오늘 날짜를 나타내는 데 사용됩니다. java.util.Date와 달리 날짜만 있고 시간은 포함되지 않습니다. 날짜만 표시해야 하는 경우 이 클래스를 사용하세요. packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo01{publicstaticvoidmain(String[]args){LocalDatetoday=LocalDate.now();System.out.println("오늘 날짜:&q

Java8 packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo04{publicstaticvoidmain(String[]args){LocalDatedate1=LocalDate.now();LocalDatedate2=LocalDate.of(2018,2,5)에서 두 날짜가 동일한지 확인합니다. ;if(date1.equals(date2)){System.out.println("시간이 같습니다.");}e
