SW/Spring Boot

Spring Boot : 스프링 부트 어노테이션 설명, 방법, 예제

얇은생각 2023. 3. 10. 07:30
반응형

Spring Boot : 스프링 부트 어노테이션 설명, 방법, 예제

 

 

 

스프링 부트 주석

스프링 부트 주석은 프로그램에 대한 데이터를 제공하는 메타데이터의 한 형태입니다. 즉, 주석은 프로그램에 대한 보충 정보를 제공하는 데 사용됩니다. 그것은 개발하는 어플리케이션의 일부가 아닙니다. 사용자가 주석을 다는 코드의 작동에 직접적인 영향을 미치지 않습니다. 컴파일된 프로그램의 동작은 변경되지 않습니다.

이 섹션에서는 이 튜토리얼의 뒷부분에 사용할 몇 가지 중요한 스프링 부트 주석에 대해 살펴보겠습니다.

 

 

 

핵심 스프링 프레임워크 어노테이션

@Required: bean 세터 방법에 적용됩니다. 구성 시 주석이 달린 빈을 필수 속성으로 채워야 함을 나타냅니다. 그렇지 않으면 BeanInitilization 예외가 발생합니다.

public class Machine {

    private Integer cost;
    
    @Required
    public void setCost(Integer cost) {
        this.cost = cost;
    }
    
    public Integer getCost() {
        return cost;
    }
}

 

 

@Autowired: 스프링은 @Autowired 어노테이션을 제공하여 어노테이션기반 기반 Auto wiring을 제공합니다. 설정자 메서드, 인스턴스 변수 및 생성자에 스프링 빈을 자동으로 연결하는 데 사용됩니다. @Autowired 주석을 사용하면 스프링 컨테이너가 데이터 유형을 일치시켜 빈을 자동 배선합니다.

@Component
public class Customer {

    private Person person;
    
    @Autowired
    public Customer(Person person) {
        this.person = person;
    }
}

 

 

@Configuration: 클래스 수준 주석입니다. 스프링 컨테이너가 bean 정의의 소스로 사용하는 @Configuration으로 주석이 달린 클래스입니다.

@Configuration
public class Vehicle {
    @BeanVehicle engine() {
        return new Vehicle();
    }
}

 

 

@ComponentScan : Bean을 찾기 위해 패키지를 스캔하고 싶을 때 사용됩니다. @Configuration(구성) 주석과 함께 사용됩니다. 스프링 구성요소를 검색할 기본 패키지를 지정할 수도 있습니다.

@ComponentScan(basePackages = "com.xxx")
@Configuration
public class ScanComponent {
    // ...  
}

 

 

@Bean: 메서드 수준의 주석입니다. XML <bean> 태그의 대안입니다. 스프링 컨테이너에서 관리할 빈을 생산하는 방법을 알려줍니다.

@Bean
public BeanExample beanExample() {
    return new BeanExample();
}

 

 

 

스프링 프레임워크 고정형 주석

@Component: 클래스 수준 주석입니다. Java 클래스를 빈으로 표시하는 데 사용됩니다. @Component로 주석이 달린 Java 클래스가 클래스 경로 중에 발견되었습니다. Spring Framework는 이를 선택하여 애플리케이션 컨텍스트에서 스프링 빈으로 구성합니다.

@Component
public class Student {
    .......
}

 

 

@Controller : 클래스 수준 주석입니다. @Component의 전문 기술입니다. 클래스를 웹 요청 처리기로 표시합니다. 웹 페이지를 제공하는 데 자주 사용됩니다. 기본적으로 리디렉션할 경로를 나타내는 문자열을 반환합니다. 주로 @RequestMapping 주석과 함께 사용됩니다.

@Controller
@RequestMapping("books")
public class BooksController {
    @RequestMapping(value = "/{name}", method = RequestMethod.GET)
    public Employee getBooksByName() {
        return booksTemplate;
    }
}

 

 

 

@Service : 클래스 수준에서도 사용됩니다. 스프링에게 클래스가 비즈니스 논리를 포함하고 있음을 알려줍니다.

package com.xxx;

@Service
public class TestService {
    public void service1() {
        //business code  
    }
}

 

 

@Repository : 클래스 수준 어노테이션입니다. 리포지토리는 데이터베이스에 직접 액세스하는 DAO(데이터 액세스 개체)입니다. 리포지토리는 데이터베이스와 관련된 모든 작업을 수행합니다.

package com.xxx;

@Repository
public class TestRepository {
    public void delete() {
        //persistence code  
    }
}

 

 

 

스프링 부트 주석

@EnableAutoConfiguration : 클래스 경로에 있는 빈을 자동으로 구성하고 메서드를 실행하도록 구성합니다. 개발자가 @SpringBootApplication과 같은 주석의 대안을 제공했기 때문에 이 주석의 사용은 SpringBoot 1.2.0 릴리스에서 감소했습니다.

@SpringBootApplication : @Enable은 세 개의 주석의 조합입니다.AutoConfiguration(자동 구성), @ComponentScan(구성 요소 스캔) 및 @Configuration(구성)을 선택합니다.

 

 

 

스프링 MVC 및 REST 주석

@RequestMapping : 웹 요청을 매핑하는 데 사용됩니다. 여기에는 소모품, 헤더, 메서드, 이름, 매개 변수, 경로, 생성물 및 값과 같은 많은 선택적 요소가 있습니다. 

@Controller
public class BooksController {
    @RequestMapping("/computer-science/books")
    public String getAllBooks(Model model) {
        //application code  
        return "bookList";
    }

 

 

@GetMapping : 특정 처리기 메서드에 HTTP GET 요청을 매핑합니다. @RequestMapping(method = RequestMethod.GET)을 사용하지 않고 가져오는 웹 서비스 끝점을 만드는 데 사용됩니다.

@PostMapping : 특정 처리기 메서드에 HTTP POST 요청을 매핑합니다. @RequestMapping(method = RequestMethod.POST)을 사용하는 대신 생성하는 웹 서비스 끝점을 만드는 데 사용됩니다.

@PutMapping : 특정 처리기 메서드에 HTTP PUT 요청을 매핑합니다. 생성하거나 업데이트하는 웹 서비스 끝점을 만드는 데 사용됩니다. @RequestMapping(method = RequestMethod.PUT)을 사용하는 대신 사용합니다. 

@DeleteMapping : 특정 처리기 메서드에 HTTP DELETE 요청을 매핑합니다. 리소스를 삭제하는 웹 서비스 끝점을 만드는 데 사용됩니다. @RequestMapping(메서드 = RequestMethod.DELETE) 대신 사용됩니다.삭제하십시오.)

@PatchMapping : 특정 처리기 메서드에 HTTP PATCH 요청을 매핑합니다. @RequestMapping(메서드 = RequestMethod.PATCH) 대신 사용됩니다.

@RequestBody : 메서드 매개 변수의 개체와 HTTP 요청을 바인딩하는 데 사용됩니다. 내부적으로 HTTP 메시지 변환기를 사용하여 요청 본문을 변환합니다. 메서드 매개 변수에 @RequestBody를 사용하여 주석을 달 때 Spring 프레임워크는 수신 HTTP 요청 본문을 해당 매개 변수에 바인딩합니다.

@ResponseBody : 메서드 반환 값을 응답 본문에 바인딩합니다. 이것은 반환 객체를 JSON 및 XML 형식으로 직렬화하도록 스프링 부트 프레임워크에 지시합니다.

@PathVariable : URI에서 값을 추출하는 데 사용됩니다. URL에 경로 변수가 포함된 RESTful 웹 서비스에 가장 적합합니다. 한 메서드에서 여러 @PathVariable을 정의할 수 있습니다.

@RequestParam : URL에서 쿼리 매개 변수를 추출하는 데 사용됩니다. 쿼리 매개 변수라고도 합니다. 웹 응용 프로그램에 가장 적합합니다. 쿼리 매개 변수가 URL에 없는 경우 기본값을 지정할 수 있습니다.

@RequestHeader : HTTP 요청 헤더에 대한 세부 정보를 가져오는 데 사용됩니다. 이 주석을 메서드 매개 변수로 사용합니다. 주석의 선택적 요소는 이름, 필수, 값, defaultValue입니다. 헤더의 각 세부 사항에 대해 별도의 주석을 지정해야 합니다. 여러 번 사용할 수 있습니다.

@RestController : @Controller 및 @ResponseBody 주석의 조합으로 간주할 수 있습니다. @RestController 주석 자체에는 @ResponseBody 주석이 있습니다. 따라서 @ResponseBody를 사용하여 각 메서드에 주석을 달 필요가 없습니다.

@RequestAttribute: 요청 특성에 메서드 매개 변수를 바인딩합니다. 컨트롤러 메서드에서 요청 속성에 편리하게 액세스할 수 있습니다. @RequestAttribute 주석을 사용하면 서버 측에 채워진 개체에 액세스할 수 있습니다.

반응형