>

연구를했지만 찾고있는 답변을 찾지 못했습니다. Spring에서 DAO와 서비스 클래스는 인터페이스로 선언됩니다. 인터페이스를 구현하는 클래스는 일반적으로 싱글 톤 Java Bean입니다. 질문 : 인스턴스 변수에 의존하지 않는 프라이빗 메서드를 정적으로 만들어야하는 이유가 있습니까? 왜? 예를 들어, 데이터베이스 데이터를 도메인 객체로 변환하는 DAO 클래스에는 몇 가지 개인용 메서드가 있으며 이러한 개인용 메서드는 인스턴스 변수를 사용하지 않습니다. 일부 사람들은 유틸리티로 추출해야한다고 제안 할 수 있음을 이해합니다.

  • 답변 # 1

    단일이라는 단어는 여러 가지 방식으로 사용되며 약간의 혼란을 야기 할 수 있습니다. "하드"(물리적, 클래스 기반 JVM) 싱글 톤은 일반적으로 열거 형 또는 상수를 통해 전체 JVM에 하나의 인스턴스 만 존재할 수있는 클래스입니다. 개체의 상태 나 구성이 전혀없는 경우이 패턴을 피해야합니다. 응용 프로그램의 일부간에 예기치 않은 연결이 발생할 수 있기 때문입니다. (객체가 CASE_INSENSITIVE_ORDER 와 같은 순수한 함수를 나타내는 경우 일반적으로 좋습니다. 또는 값))

    대조적으로, 단일 범위의 Bean (논리적, 컨테이너 기반)은 단순히 컨테이너를 관리하는 컨테이너가 단일 공유 인스턴스를 유지하고 하나를 원하는 모든 소비자에게 제공한다는 것을 의미합니다 (예 : 작성하는 대신) 각 소비자에 대한 별도의 개인 사본). 대부분의 Spring 애플리케이션에서 실제로는 양측 간의 계약으로 사용되는 Java 인터페이스를 구현하는 것이 바람직하므로메소드를 정적 일 수 없습니다

    성능 질문과 관련하여 static  의미-구체적으로 메소드 또는 필드가 해당 클래스의 특정 인스턴스와 관계가 없음을 나타냅니다.의미가 적절한 경우 (예 : Math 의 대부분의 방법) ) 이론적 인 성능상의 이유로 이러한 방식으로 코드의 의미를 변경하지 마십시오.

  • 이전 타입 선언에서 Haskell 타입 클래스 사용 이해
  • 다음 C에서 빈 구조체