Spring의 JavaConfig 메모 상세 정보
4860 단어 springjavaconfig주해
모두들 전통적인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 주석의 사용을 지원합니다.주요 기능은 다음과 같습니다.
주로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());
}
}
총결산이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.