Bei der Entwicklung von Java-Programmen, insbesondere von Java EE-Anwendungen, ist es immer unvermeidlich, sich mit verschiedenen Konfigurationsdateien auseinanderzusetzen. Java-Annotationen helfen uns dabei, alles aufgeräumter zu gestalten und zu verhindern, dass Konfigurationsdateien überall herumfliegen. Der folgende Artikel stellt hauptsächlich die JavaConfig-Anmerkungen im Frühjahr im Detail vor. Freunde, die sie benötigen, können darauf zurückgreifen.
Vorwort
Jeder weiß, dass traditionelles Spring im Allgemeinen auf der XML-Konfiguration basiert, aber später wurden viele JavaConfig-Anmerkungen hinzugefügt. Vor allem Springboot ist im Grunde eine Java-Konfiguration. Wenn Sie es nicht verstehen, sind Sie wirklich nicht daran gewöhnt. Machen Sie hier eine Notiz.
@RestController
Um die Entwicklung restlicher Anwendungen bequemer zu unterstützen, wurden in Spring 4 RestController-Anmerkungen hinzugefügt. Weitere Funktionen als Controller-Anmerkungen sind unten aufgeführt Die RequestMapping-Methode fügt standardmäßig die Annotation „ResponseBody“ hinzu, sodass Sie die Annotation nicht zu jeder einzelnen Annotation hinzufügen müssen.
@Configuration
Diese Annotation gibt an, dass es sich bei dieser Klasse um die Konfigurationsklasse von Spring handelt und sie wird mit der Component-Annotation geliefert
@ ImportResource
Das entsprechende XML
<import resource="applicationContext-ehcache.xml"/>
Existenznotwendigkeit
Dies ist mit der herkömmlichen XML-Konfiguration kompatibel. JavaConfig kann beispielsweise aop:advisor und tx:advice nicht gut unterstützen. Führen Sie @Configuration ein. basierendes Äquivalent zum aop:config XML-Element
@ComponentScan
entsprechendes XML
<context:component-scan base-package="com.xixicat.app"/>
Diese Konfiguration umfasst automatisch die folgenden Konfigurationsfunktionen:
<context:annotation-config/>
ist die Registrierung von AutowiredAnnotationBeanPostProcessor (erforderlich für die Verwendung von @Autowired), CommonAnnotationBeanPostProcessor( Es gibt vier BeanPostProcessor (muss registriert sein, um @Resource, @PostConstruct, @PreDestroy usw. zu verwenden), PersistenceAnnotationBeanPostProcessor (muss registriert sein, um @PersistenceContext zu verwenden) und RequiredAnnotationBeanPostProcessor (muss registriert sein, um @Required zu verwenden).
Es ist erwähnenswert, dass die Spring 3.1RC2-Version es nicht zulässt, dass sich mit „Configuration“ annotierte Klassen innerhalb des von ComponentScan angegebenen Paketbereichs befinden, andernfalls wird ein Fehler gemeldet.
@Bean
Die entsprechende XML lautet wie folgt:
<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
@EnableWebMvc
Die entsprechende XML lautet wie folgt:
<mvc:annotation-driven />
Diese Konfiguration wird automatisch registriert DefaultAnnotationHandlerMapping( zum Registrieren der Zuordnungsbeziehung zwischen Handler-Methode und Anforderung) und AnnotationMethodHandlerAdapter (Verarbeiten der Parameter der Handler-Methode vor dem eigentlichen Aufruf) sind zwei Beans zur Unterstützung der Verwendung von @Controller-Annotationen.
Die Hauptfunktionen sind wie folgt:
Konfigurierbarer ConversionService (praktisch für benutzerdefinierte Typkonvertierung)
Unterstützung mit @ NumberFormat formatiert numerische Felder
Unterstützt die Verwendung von @DateTimeFormat zum Formatieren von Datums-, Kalender- und Joda-Zeitfeldern (wenn der Klassenpfad Joda-Zeit enthält)
Unterstützung @Valid-Parameterüberprüfung (wenn sich der JSR-303-bezogene Anbieter im Klassenpfad befindet)
Unterstützung des XML-Lesens und Schreibens der @RequestBody/@ResponseBody-Annotation (wenn JAXB im Klassenpfad ist)
Unterstützt JSON-Lesen und Schreiben von @RequestBody/@ResponseBody-Annotationen (wenn Jackson sich im Klassenpfad befindet)
@ContextConfiguration
Geben Sie hauptsächlich die Java-Konfiguration während des Junit-Tests an
@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
wird hauptsächlich für die Restentwicklung verwendet. Den zurückgegebenen HTTP-Rückgabecode finden Sie in der Aufzählung org.springframework.http.HttpStatus. Im Allgemeinen gibt die Post-Methode HttpStatus.CREATED zurück und die DELETE- und PUT-Methoden geben HttpStatus.OK zurück. Sie können auch die Ausnahmebehandlung konfigurieren, siehe @ExceptionHandler und @ControllerAdvice
@ExceptionHandler
wird hauptsächlich zur Behandlung bestimmter Ausnahmen und zur Rückgabe des angegebenen HTTP-Statuscodes verwendet , wobei jede Controller-Methode ihren eigenen Try-Catch speichert. Im Allgemeinen können Sie für jede Anwendung eine Ausnahmebasisklasse definieren und dann Geschäftsausnahmen definieren, sodass Geschäftsausnahmen einheitlich erfasst werden können.
@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()); }
Es ist jedoch zu beachten, dass diese Methode auf Ausnahmen beschränkt ist, die von der Methodenaufrufkette des Controllers generiert werden. Was ist, wenn auch geplante Aufgaben verwendet werden? Frühling? Ja, diese Anmerkung wird nicht abgefangen.
@ControllerAdvice
Wird mit @ExceptionHandler verwendet, um die Controller-Methode abzufangen.
@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()); } }
Zusammenfassung
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in JavaConfig-Annotationen in Spring. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!