Spring의 JavaConfig 메모 상세 정보

앞말
모두들 전통적인spring은 일반적으로 xml 설정을 바탕으로 하는 것을 알고 있지만, 이후에 많은 JavaConfig의 주석이 추가되었다.특히springboot은 기본적으로 일색의javaconfig입니다. 잘 모르겠지만 정말 적응이 안 돼요.여기 메모 좀 해주세요.
@RestController
spring4는 restfull 응용 프로그램의 개발을 더욱 편리하게 지원하기 위해 RestController의 주석을 추가했습니다. Controller 주석보다 많은 기능은 아래의 RequestMapping 방법에 기본적으로 ResponseBody 주석을 추가하여 이 주석을 추가하지 않도록 하는 것입니다.
@Configuration
이 태그는 스프링의 설정 클래스입니다. 자체는 Component 주석을 가지고 있습니다.
@ImportResource
대응하는 xml

<import resource="applicationContext-ehcache.xml"/>
존재의 필요성
이것은 전통적인 xml 설정을 호환하는 것입니다. 왜냐하면 자바 Config는 아직 만능이 아닙니다. 예를 들어 자바 Config는 aop:advisor와 tx:advice, Introduce @EnableAspectJAutoProxy(equivalent to aop:aspectj-autoproxy), Introduce @Configuration-based equivalent to aop:config XML element
@ComponentScan
대응하는 xml

<context:component-scan base-package="com.xixicat.app"/>
이 구성에는 다음과 같은 구성 기능이 자동으로 포함됩니다.

<context:annotation-config/>
스프링 용기에 Autowired Annotation Bean Post Processor(@Autowired 사용 시 등록해야 함), CommonAnnotation Bean Post Processor(@Resource, @Post Construct, @Pre Destroy 사용 시 등록해야 함), Persistence Annotation Bean Post Processor(@Persistence Context 사용 시 등록해야 함), Required Annotation Bean Post Processor(@Required 사용 시 등록해야 함) 등 4개의 Bean Post Processor를 등록하는 것이다.
주의해야 할 것은 Spring3.1RC2 버전은 ComponentScan이 지정한 패키지 범위 내에서 주해를 허용하지 않습니다. 그렇지 않으면 오류가 발생할 수 있습니다.
@Bean
대응하는 xml은 다음과 같습니다.

<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
@EnableWebMvc
대응하는 xml은 다음과 같습니다.

<mvc:annotation-driven />
이 설정은 자동으로 Default AnnotationHandler Mapping (handler method와request의 mapping 관계를 등록하기 위해) 과 Annotation MethodHandler Adapter (실제 handler method를 호출하기 전에 매개 변수를 처리) 두 개의 bean을 등록하여 @Controller 주석의 사용을 지원합니다.
주요 기능은 다음과 같습니다.
  • 구성 가능한 Conversion Service(사용자 정의 유형 변환 용이)
  • @NumberFormat으로 디지털 형식 필드를 포맷할 수 있습니다
  • @DateTimeFormat으로 날짜, Calendar 및 Joda Time 필드를 포맷할 수 있습니다(classpath에 Joda Time이 있다면)
  • @Valid의 매개 변수 검사를 지원합니다(JSR-303 관련provider가classpath에 있다면)
  • @RequestBody/@ResponseBody 메모를 지원하는 XML 읽기와 쓰기(JAXB가classpath에 있다면)
  • @RequestBody/@ResponseBody 주석을 지원하는 JSON 읽기와 쓰기 (잭슨이classpath에 있다면)
  • @ContextConfiguration
    주로junit 테스트 시 자바 config를 지정합니다
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration({
     "classpath*:spring/*.xml",
     "classpath:applicationContext.xml",
     "classpath:applicationContext-rabbitmq.xml",
     "classpath:applicationContext-mail.xml",
     "classpath:applicationContext-medis.xml",
     "classpath:applicationContext-mybatis.xml"})
    @TransactionConfiguration(transactionManager = "mybatisTransactionManager", defaultRollback = false)
    public class AppBaseTest {
     //......
    }
    @ResponseStatus
    주로rest개발용, 주해가 되돌아오는 http 되돌아오는 코드, 구체적인 값은 org를 보십시오.springframework.http.HttpStatus 매거진.일반post 방법은 HttpStatus로 돌아갑니다.CREATED, DELETE 및 PUT 메서드는 HttpStatus로 돌아갑니다.OK.예외 처리도 설정할 수 있습니다. @ExceptionHandler 및 @ControllerAdvice 참조.
    @ExceptionHandler
    지정한 이상을 처리하고 지정한 HTTP 상태 코드를 되돌려주며 컨트롤러마다 trycatch를 사용하지 않도록 합니다.일반적으로 모든 응용 프로그램에 이상 기류를 정의한 다음에 업무 이상을 정의할 수 있다. 그러면 이곳에서 업무 이상을 통일적으로 포획할 수 있다.
    
    @ExceptionHandler(BizException.class)
     @ResponseStatus(HttpStatus.BAD_REQUEST)
     public @ResponseBody
     ReturnMessage bizExceptionHandler(Exception ex) {
      logger.error(ex.getMessage(),ex);
      return new ReturnMessage(HttpStatus.BAD_REQUEST.value(),ex.getMessage());
     }
    그러나 주의해야 할 것은 이런 방법은 컨트롤러의 방법에만 한정되어 체인을 호출하는 데 이상이 발생한다는 것이다. 만약spring에서 정시 임무를 사용했다면 이 주석은 차단되지 않을 것이다.
    @ControllerAdvice
    @ExceptionHandler와 협조하여 컨트롤러를 차단하는 방법입니다.
    
    @ControllerAdvice
    public class ErrorController {
     
     private static final Logger logger = LoggerFactory.getLogger(ErrorController.class);
     
     @ExceptionHandler(BizException.class)
     @ResponseStatus(HttpStatus.BAD_REQUEST)
     public @ResponseBody
     ReturnMessage bizExceptionHandler(Exception ex) {
      logger.error(ex.getMessage(),ex);
      return new ReturnMessage(HttpStatus.BAD_REQUEST.value(),ex.getMessage());
     }
     
     @ExceptionHandler(Exception.class)
     @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
     public @ResponseBody
     ReturnMessage serverExceptionHandler(Exception ex) {
      logger.error(ex.getMessage(),ex);
      return new ReturnMessage(HttpStatus.INTERNAL_SERVER_ERROR.value(),ex.getMessage());
     }
    }
    총결산
    이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.

    좋은 웹페이지 즐겨찾기