programing

스프링 주석 @Controller는 @Service와 동일합니까?

starjava 2023. 3. 3. 16:48
반응형

스프링 주석 @Controller는 @Service와 동일합니까?

인가?@Controller와 same as와 @Service

에 대한 아이디어가 있습니다.@Controller 쓸 수 요.URL이치노

동시에@Service비즈니스 로직을 포함하는 서비스 클래스에 주석을 달기 위해 사용됩니다.

★★★★★★★★★를 사용할 수 있습니까?@Controller@Service비스클 클래 석석 석석 석?? ???

아니요, 그들은 서로 꽤 달라요.

둘 다 @Component 주석의 다른 전문화(실제로는 같은 인터페이스의 다른2개의 실장)이므로 클래스 패스스캔(XML 설정으로 선언하는 경우)에 의해 양쪽을 검출할 수 있습니다.

@서비스 주석은 서비스 계층에서 사용되며 서비스 작업을 수행하는 클래스에 주석을 붙입니다. 대부분의 경우 사용하지 않지만 대부분의 경우 이 주석을 사용하여 모범 사례를 나타냅니다.예를 들어 DAO 클래스를 직접 호출하여 객체를 데이터베이스에 유지할 수 있지만 이는 끔찍합니다.DAO를 호출하는 서비스 클래스를 호출하는 것은 매우 좋습니다.이는 우려의 분리 패턴을 수행하는 것이 좋습니다.

@Controller annotation은 Spring MVC 프레임워크(Web Application 구현에 사용되는 Spring Framework의 구성요소)에서 사용되는 주석입니다.@Controller 주석은 특정 클래스가 컨트롤러 역할을 수행함을 나타냅니다.@Controller 주석은 주석이 달린 클래스에 대한 고정관념으로 작용하며 해당 역할을 나타냅니다.디스패처는 이러한 주석 클래스에서 매핑된 메서드를 검색하고 @RequestMapping 주석을 검출합니다.

Spring MVC 아키텍처를 보면 모든 HTTP 요구를 적절한 컨트롤러 클래스(@Controller에 의해 주석됨)로 디스패치하는 프론트컨트롤러를 나타내는 Dispatcher Servlet 클래스(XML Configuration으로 선언함)가 있습니다.이 클래스는 비즈니스 로직(서비스 호출 가능)을 메서드로 수행합니다.이러한 클래스(또는 그 메서드)에는 보통 컨트롤러와 그 메서드에 의해 처리되는HTTP 요구를 지정하는 @RequestMapping 주석도 있습니다.

예를 들어 다음과 같습니다.

@Controller
@RequestMapping("/appointments")
public class AppointmentsController {

    private final AppointmentBook appointmentBook;

    @Autowired
    public AppointmentsController(AppointmentBook appointmentBook) {
        this.appointmentBook = appointmentBook;
    }

    @RequestMapping(method = RequestMethod.GET)
    public Map<String, Appointment> get() {
        return appointmentBook.getAppointmentsForToday();
    }

이 클래스는 컨트롤러입니다.

이 클래스는 "/appointments" "folder"에 대한 모든 HTTP 요청을 처리합니다. 특히 get 메서드는 "/appointments" 폴더에 대한 모든 GET HTTP 요청을 처리하기 위해 호출되는 메서드입니다.

나는 이제 그것이 너에게 더 명확해졌으면 좋겠다.

@Controller,@Service이라고 하는 은 '의 @Component석입니니다다

@Component
public @interface Service {
    ….
}

 

@Component
public @interface Controller {
    …
}

그럼 뭐가 다른데?

@컨트롤러

@Controller주석은 특정 클래스가 컨트롤러 역할을 수행함을 나타냅니다.@Controller주석은 주석이 달린 클래스에 대한 고정관념으로 작용하여 역할을 나타냅니다.

@Controller의 특별한 점은 무엇입니까?

은 다른 수 .@Service ★★★★★★★★★★★★★★★★★」@Repository이치노는 '이 붙은 .@Controller를 검출합니다.@RequestMapping을 사용하다할 수 있는 것은 「」입니다.@RequestMapping@Controller주석 클래스


@서비스

@Services비즈니스 로직과 콜 방식을 저장소 계층에 보유합니다.

@Service의 특별한 점은 무엇입니까?

비즈니스 로직이 유지되고 있음을 나타내는 데 사용되는 것 외에 이 주석이 제공하는 특별한 점은 없습니다. 하지만 앞으로 봄을 더욱 돋보이게 할 수도 있습니다.

링크된 답변:봄철 @Component, @Repository 및 @Service 주석의 차이점은 무엇입니까?

아요 no요 。@Controller 않다@Service다 '다 하다'의@Component둘 다 클래스 패스스캔에 의한 검출의 후보가 됩니다.@Service계층에서 되며, 주석은 계층에서 사용됩니다.@Controller봄 MVC. a.@Controller는 일반적으로 URL 매핑을 가지며 웹 요청에 의해 트리거됩니다.

@서비스 vs @컨트롤러

@Service : 클래스는 (코어 J2EE 패턴의 의미로) "비즈니스 서비스 외관" 또는 이와 유사한 것입니다.

@Controller : 주석이 달린 클래스가 "Controller"(예: 웹 컨트롤러)임을 나타냅니다.

-----------주요 고정관념에 대한 자세한 내용은 http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Component.html를 참조하십시오.

@interface 컴포넌트

  @Target(value=TYPE)
     @Retention(value=RUNTIME)
     @Documented
    public @interface Component

주석이 달린 클래스가 구성 요소임을 나타냅니다.이러한 클래스는 주석 기반 구성 및 클래스 경로 검색을 사용할 때 자동 탐지 후보로 간주됩니다.

다른 클래스 레벨의 주석도 컴포넌트, 일반적으로 @Repository 주석 또는 Aspect J의 @Aspect 주석과 같은 특수한 종류의 컴포넌트를 식별하는 것으로 간주할 수 있습니다.

@interface 컨트롤러

@Target(value=TYPE)
 @Retention(value=RUNTIME)
 @Documented
 @Component
public @interface Controller

주석이 달린 클래스가 "컨트롤러"(예: 웹 컨트롤러)임을 나타냅니다.

이 주석은 @Component의 특화 기능으로 기능하며 클래스 패스스캔을 통해 구현 클래스를 자동 검출할 수 있습니다.일반적으로 RequestMapping 주석을 기반으로 주석이 달린 핸들러 메서드와 조합하여 사용됩니다.

@interface 서비스

@Target(value=TYPE)
 @Retention(value=RUNTIME)
 @Documented
 @Component
public @interface Service

주석이 달린 클래스가 Domain-Driven Design(Evans, 2003)에 의해 원래 "캡슐화된 상태를 가지지 않고 모델 내에서 독립된 인터페이스로 제공되는 작업"으로 정의된 "Service"임을 나타냅니다.클래스가 (코어 J2EE 패턴의 의미에서) "비즈니스 서비스 외관" 또는 이와 유사한 것임을 나타낼 수도 있습니다.이 주석은 범용 고정관념이며 개별 팀은 의미를 좁혀 적절하게 사용할 수 있다.

이 주석은 @Component의 특화 기능으로 기능하며 클래스 패스스캔을 통해 구현 클래스를 자동 검출할 수 있습니다.

@interface 저장소

@Target(value=TYPE)
 @Retention(value=RUNTIME)
 @Documented
 @Component
public @interface Repository

주석 클래스가 "리포지토리"임을 나타냅니다. 원래 Domain-Driven Design(Evans, 2003)은 "오브젝트 컬렉션을 에뮬레이트하는 저장소, 검색 및 검색 동작을 캡슐화하는 메커니즘"으로 정의했습니다."Data Access Object"와 같은 기존 J2EE 패턴을 구현하는 팀도 DAO 클래스에 이 고정관념을 적용할 수 있지만, 그 전에 Data Access Object와 DDD 스타일의 리포지토리의 차이를 이해하는 데 주의를 기울여야 합니다.이 주석은 범용 고정관념이며 개별 팀은 의미를 좁혀 적절하게 사용할 수 있다.

이렇게 주석이 달린 클래스는 Spring Data Access에 적합합니다.PersistenceExceptionTranslationPostProcessor와 함께 사용할 경우 예외 변환.또한 주석 클래스는 툴링, 측면 등을 목적으로 한 애플리케이션 아키텍처 전체에서의 역할에 대해서도 명확하게 설명됩니다.

Spring 2.5부터는 이 주석이 @Component의 전문화 역할도 하므로 클래스 패스스캔을 통해 구현 클래스를 자동 검출할 수 있습니다.

여기에서도 같은 질문에 이미 대답했습니다.여기에 링크가 있습니다.

둘 다 다르지 않다.

@Service Annotation은 다른 용도로, @Controller는 다른 용도로 사용합니다.실제로 Spring 프레임워크에서는 Spring @Component, @Service, @Repository 및 @Controller 주석이 클래스 경로 스캔을 사용한 자동 빈 검출에 사용되지만 모든 기능이 동일한 것은 아닙니다.@서비스:주석 클래스가 비즈니스 계층의 서비스 구성 요소임을 나타냅니다.

@컨트롤러:주석 클래스는 컨트롤러 컴포넌트이며 주로 프레젠테이션레이어에서 사용되고 있음을 나타냅니다.

@service @Controller로 선언할 수 있습니다.

@Controller @Service로 선언할 수 없습니다.

@서비스

그것은 규칙적이다.클래스를 구성 요소로 선언하는 중입니다.

@컨트롤러

컴포넌트보다 조금 더 특별합니다.디스패처는 여기서 @RequestMapping을 검색합니다.따라서 @Controller로 주석을 단 클래스는 API를 호출하기 위한 URL을 선언함으로써 추가 권한을 갖게 됩니다.

  • 컨트롤러는 다른 보기 간의 탐색을 처리합니다.매핑 요구 매핑은 컨트롤러의 도움을 받아 처리됩니다.
  • 서비스는 보통 비즈니스 로직이 실행되는 저장소와 직접 대화합니다.서비스 계층에서 추가, 삭제, 삭제 등을 수행할 수 있습니다.

아니, 그들은 다르면 안 돼.예를 들어 앱이 배포되면 컨트롤러 매핑이 중단됩니다.

컨트롤러는 서비스가 아니며 그 반대도 마찬가지입니다.

봄부터 활동

보시는 바와 같이 이 클래스에는 @Controller의 주석이 붙어 있습니다.@Controller 자체로는 별로 효과가 없습니다.이 클래스의 주된 목적은 이 클래스를 컴포넌트 스캔의 컴포넌트로 식별하는 것입니다.HomeController는 @Controller에서 주석을 달기 때문에 Spring의 컴포넌트 검사에서는 자동으로 HomeController의 인스턴스를 Spring 애플리케이션 컨텍스트에서 빈으로 만듭니다.

실제로 @Component, @Service 및 @Repository를 포함한 몇 개의 다른 주석도 @Controller와 유사한 목적으로 사용됩니다.다른 주석에서도 HomeController에 효과적으로 주석을 달 수 있지만 여전히 동일하게 작동합니다.단, @Controller를 선택하면 응용 프로그램에서 이 컴포넌트의 역할에 대해 더 자세히 알 수 있습니다.

다 @Component 주석의 특수한 형식입니다.@controller와 @serviec 모두 @component 주석의 동일한 기능과 자체 기능을 공유합니다.

@Controller는 클래스 수준의 주석으로 클래스를 웹 요청 핸들러로 표시합니다.상세한 것에 대하여는, 다음의 Web 사이트를 참조해 주세요.https://www.baeldung.com/spring-controller-vs-restcontroller

@Service는 클래스 레벨의 주석이기도 하며 비즈니스 로직이 포함되어 있습니다.상세한 것에 대하여는, 다음의 Web 사이트를 참조해 주세요.https://www.baeldung.com/spring-component-repository-service

언급URL : https://stackoverflow.com/questions/15922991/is-spring-annotation-controller-same-as-service

반응형