>  기사  >  Java  >  SpringBoot 주석의 지식 포인트는 무엇입니까?

SpringBoot 주석의 지식 포인트는 무엇입니까?

WBOY
WBOY앞으로
2023-05-15 16:40:06900검색

1. 주석 목록

@SpringBootApplication: @ComponentScan, @Configuration 및 @EnableAutoConfiguration 주석을 포함합니다. 그중 @ComponentScan을 사용하면 spring Boot가 Configuration 클래스를 스캔하고 이를 프로그램 컨텍스트에 추가할 수 있습니다.

@Configuration은 Spring의 XML 구성 파일과 동일하며 Java 코드를 사용하여 유형 안전성을 확인할 수 있습니다.

@EnableAutoConfiguration 자동 구성.

@ComponentScan 구성요소 스캐닝은 일부 빈을 자동으로 발견하고 조립할 수 있습니다.

@Component를 CommandLineRunner와 함께 사용하여 프로그램 시작 후 몇 가지 기본 작업을 수행할 수 있습니다.

@RestController 주석은 @Controller 및 @ResponseBody의 모음으로 이것이 컨트롤러 Bean임을 나타내며 REST 스타일 컨트롤러인 HTTP 응답 본문에 함수의 반환 값이 직접 채워집니다.

@Autowired 자동 가져오기.

@PathVariable은 매개변수를 가져옵니다.

@JsonBackReference는 중첩된 외부 링크 문제를 해결합니다.

@RepositoryRestResourcepublic은 spring-boot-starter-data-rest와 함께 사용됩니다.

2. 주석에 대한 자세한 설명

@SpringBootApplication: 스프링 부트가 필요한 프로그램을 자동으로 구성한다고 선언합니다. 이 구성은 @Configuration, @EnableAutoConfiguration 및 @ComponentScan 세 가지 구성과 동일합니다.

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication //

@Configuration

@EnableAutoConfiguration

@ComponentScan 공용 클래스 응용 프로그램과 동일 {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

@ResponseBody: 이 메서드의 반환 결과가 HTTP 응답 본문에 직접 기록됨을 나타냅니다. 일반적으로 비동기식으로 획득됩니다. 데이터가 RESTful API를 구축하는 데 사용될 때 사용됩니다. @RequestMapping을 사용한 후 반환 값은 일반적으로 점프 경로로 구문 분석됩니다. @responsebody를 추가한 후에는 반환 결과가 점프 경로로 구문 분석되지 않고 HTTP 응답 본문에 직접 기록됩니다. 예를 들어, json 데이터를 비동기적으로 얻고 @responsebody를 추가하면 json 데이터가 직접 반환됩니다. 이 주석은 일반적으로 @RequestMapping과 함께 사용됩니다. 샘플 코드:

@RequestMapping(“/test”)@ResponseBodypublic String test(){ return “ok”;}

@Controller: 컨트롤러 클래스를 정의하는 데 사용됩니다. Spring 프로젝트에서 컨트롤러는 사용자를 보내는 역할을 담당합니다. URL 요청은 해당 서비스 인터페이스(서비스 계층)로 전달됩니다. 일반적으로 이 주석은 클래스에 있으며 일반적으로 메서드에는 @RequestMapping 주석이 수반되어야 합니다. 샘플 코드:

@Controller@RequestMapping("/demoInfo") public class DemoController {

@Autowired private DemoInfoService 데모InfoService;

@RequestMapping("/hello") public String hello(Map map){ System .out.println("DemoController.hello()");

map.put("hello","from TemplateController.helloHtml"

)//hello.html 또는 hello.ftl 템플릿을 사용합니다. render Display.

return"/hello";

}

}

@RestController: @ResponseBody 및 @Controller의 컬렉션인 제어 계층 구성 요소에 주석을 추가하는 데 사용됩니다. 샘플 코드:

import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; @RestController@RequestMapping("/demoInfo2")publicclass DemoController2 {

@RequestMapping(" /test") public String test(){ return"ok";

}

}

@RequestMapping: 라우팅 정보를 제공하고 컨트롤러의 특정 기능에 대한 URL 매핑을 담당합니다.

@EnableAutoConfiguration: Spring Boot 자동 구성(자동 구성): 추가한 jar 종속성을 기반으로 Spring 애플리케이션을 자동으로 구성해 보세요. 예를 들어 HSQLDB가 클래스 경로에 존재하고 데이터베이스 연결 빈을 수동으로 구성하지 않은 경우 자동으로 메모리 내 데이터베이스를 구성합니다. @Configuration 클래스에 @EnableAutoConfiguration 또는 @SpringBootApplication 주석을 추가하여 자동 구성을 선택할 수 있습니다. 특정 자동 구성 클래스가 적용되는 경우 @EnableAutoConfiguration 주석의 제외 속성을 사용하여 이를 비활성화할 수 있습니다.

@ComponentScan: @ 주석이 달린 클래스가 자동으로 검색되고 검색됨을 의미합니다. Component, @Controller, @Service 등을 스캔하여 Bean으로 등록하면 @Configuration 클래스를 포함한 모든 Spring 구성요소를 자동으로 수집할 수 있습니다. 우리는 종종 @ComponentScan 주석을 사용하여 Bean을 검색하고 이를 @Autowired Annotation 가져오기와 결합합니다. @Configuration 클래스를 포함하여 모든 Spring 구성 요소를 자동으로 수집할 수 있습니다. 우리는 종종 @ComponentScan 주석을 사용하여 Bean을 검색하고 이를 @Autowired 주석으로 가져옵니다. 클래스가 있고 하위 패키지에 @Service, @Repository 등의 주석이 추가됩니다.

@Configuration: 기존 xml 구성 파일과 동일합니다. 일부 타사 라이브러리에서 xml 파일을 사용해야 하는 경우 @Configuration 클래스를 프로젝트의 기본 구성 클래스로 사용하는 것이 좋습니다. @ImportResource 주석을 사용할 수 있습니다. xml 구성 파일을 로드합니다.

@Import: 다른 구성 클래스를 가져오는 데 사용됩니다.

@ImportResource: xml 구성 파일을 로드하는 데 사용됩니다.

@Autowired: 종속 Bean을 자동으로 가져옵니다.

@Service: 일반적으로 서비스 계층의 구성 요소를 수정하는 데 사용됩니다.

@Repository: @Repository 주석을 사용하면 DAO 또는 저장소가 수정된 예외 변환을 제공하도록 할 수 있습니다. 이 주석은 ComponentScan에 의해 검색 및 구성되므로 이에 대한 XML 구성 항목을 제공할 필요가 없습니다.

@Bean: @Bean으로 표시된 메소드는 XML로 구성된 Bean과 동일합니다.

@Value: Spring boot application.properties에서 구성한 속성 값을 삽입합니다. 샘플 코드:

@Value(value = “#{message}”)private String message;

@Inject: 필수 속성이 없다는 점을 제외하고 기본 @Autowired와 동일합니다.

@Component: 일반적으로 구성 요소를 나타냅니다. , 구성 요소를 분류하기 어려운 경우 이 주석을 사용하여 표시할 수 있습니다.

@Bean: XML과 동일하며 클래스 대신 메소드 위에 배치됩니다. 이는 Bean을 생성하고 관리를 위해 Spring에 넘겨준다는 의미입니다.

@AutoWired: 종속 Bean을 자동으로 가져옵니다. 유형별 방법. 구성된 빈을 사용하여 속성과 메소드의 조립을 완료합니다. 클래스 멤버 변수, 메소드 및 생성자에 주석을 달아 자동 조립을 완료할 수 있습니다. (required=false)를 추가하면 해당 Bean을 찾을 수 없어도 오류가 보고되지 않습니다.

@Qualifier: 동일한 유형의 Bean이 여러 개 있는 경우 @Qualifier("name")를 사용하여 지정할 수 있습니다. @Autowired와 함께 사용됩니다. 이름으로 주입할 수 있는 것 외에도 @Qualifier 한정 설명자는 후보자를 선택하는 방법에 대해 보다 세밀한 제어를 제공할 수 있습니다. 구체적인 사용법은 다음과 같습니다:

@Autowired@Qualifier(value = “demoInfoService”)private DemoInfoService decoInfoService;

@ Resource(name="name",type="type"): 괄호 안에 내용이 없으면 기본값은 byName입니다. @Autowired를 사용하여 비슷한 작업을 수행하세요.

3. JPA 주석

@Entity: @Table(name=""): 이것이 엔터티 클래스임을 나타냅니다. 일반적으로 jpa에서 사용되는 이 두 개의 Annotation은 함께 사용하는 것이 일반적이지만, 테이블명과 엔터티 클래스명이 동일할 경우 @Table은 생략 가능

@MappedSuperClass: 상위 클래스로 판단되는 엔터티에 사용됩니다. 하위 클래스는 상위 클래스의 속성을 상속받을 수 있습니다.

@NoRepositoryBean: 일반적으로 상위 클래스의 저장소로 사용됩니다. 이 주석을 사용하면 Spring은 저장소를 인스턴스화하지 않습니다.

@Column: 필드명과 컬럼명이 동일할 경우 생략 가능합니다.

@Id: 이 속성이 기본 키임을 나타냅니다.

@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “repair_seq”): 기본 키 생성 전략이 시퀀스임을 나타냅니다(Auto, IDENTITY, 기본 등일 수 있음, Auto는 여러 데이터베이스 간에 전환할 수 있음을 의미). 지정된 시퀀스의 이름은 Repair_seq입니다.

@SequenceGeneretor(name = “repair_seq”, 시퀀스 이름 = “seq_repair”, 할당 크기 = 1): name은 쉽게 사용할 수 있도록 시퀀스의 이름이고, 시퀀스 이름은 데이터베이스의 시퀀스 이름이며, 두 이름은 일관성을 가질 수 있습니다.

@Transient: 이 속성이 데이터베이스 테이블의 필드에 대한 매핑이 아니며 ORM 프레임워크가 이 속성을 무시함을 나타냅니다. 속성이 데이터베이스 테이블의 필드 매핑이 아닌 경우 @Transient로 표시해야 합니다. 그렇지 않으면 ORM 프레임워크는 기본적으로 @Basic 주석을 사용합니다. @Basic(fetch=FetchType.LAZY): 태그는 엔터티 속성의 로드 방법을 지정할 수 있습니다

@JsonIgnore: 이 기능은 json 직렬화 중에 Java bean의 일부 속성을 무시하는 것이며 직렬화 및 역직렬화 모두 영향을 받습니다.

@JoinColumn (name="loginId"): 일대일: 다른 테이블을 가리키는 이 테이블의 외래 키입니다. 일대다: 이 테이블을 가리키는 다른 테이블의 외래 키입니다.

@OneToOne, @OneToMany, @ManyToOne: 최대 절전 모드 구성 파일에서 일대일, 일대다, 다대일에 해당합니다.

4. SpringMVC 관련 참고사항

@RequestMapping: @RequestMapping("/path")은 컨트롤러가 모든 "/path" URL 요청을 처리한다는 의미입니다. RequestMapping은 클래스나 메소드에서 사용할 수 있는 요청 주소 매핑을 처리하는 데 사용되는 주석입니다. 클래스에서 사용된다는 것은 요청에 응답하는 클래스의 모든 메서드가 이 주소를 상위 경로로 사용한다는 의미입니다. 이 주석에는 6가지 속성이 있습니다.

params: 이 메소드로 처리되기 전에 요청에 특정 매개변수 값이 포함되어야 함을 지정합니다. 헤더: 이 메소드가 요청을 처리하려면 지정된 요청에 특정 지정된 헤더 값이 포함되어야 합니다. 값: 요청의 실제 주소를 지정합니다. 지정된 주소는 URI일 수 있습니다. 템플릿 모드 방법: 요청의 방법 유형(GET, POST, PUT, DELETE 등)을 지정합니다. 소비자: 제출 콘텐츠 유형(Content-Type)을 지정합니다. ) application/json, text/html;Produces: 반환할 콘텐츠 유형을 지정합니다. 요청 헤더의 (Accept) 유형에 지정된 유형

@RequestParam이 포함된 경우에만 반환됩니다. : 메소드의 매개변수 앞에 사용됩니다. @RequestParamString a =request.getParameter("a").

@PathVariable: 경로 변수. 예를 들어

RequestMapping("user/get/mac/{macAddress}") public String getByMacAddress(@PathVariable String macAddress){ //do Something;}

매개변수는 중괄호 안의 이름과 동일해야 합니다.

5. 전역 예외 처리

@ControllerAdvice: @Component를 포함합니다. 스캔할 수 있습니다. 예외를 균일하게 처리합니다.

@ExceptionHandler(Exception.class): 이 예외가 발생할 때 다음 메서드가 실행될 것임을 나타내기 위해 메서드에 사용됩니다.

위 내용은 SpringBoot 주석의 지식 포인트는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제