Dieser Artikel stellt hauptsächlich eine Zusammenfassung der in Spring Boot verwendeten allgemeinen Annotationen vor. Freunde, die sie benötigen, können sich auf die
@RestController- und @RequestMapping-Annotationen
beziehen 4.0 Wichtig Eine neue Verbesserung ist die @RestController-Annotation, die von der @Controller-Annotation erbt. Vor Version 4.0 verwendeten alle Spring MVC-Komponenten @Controller, um die aktuelle Klasse als ControllerServlet zu identifizieren. Mit dieser Funktion können wir REST-Dienste entwickeln, ohne @Controller, sondern einen dedizierten @RestController zu verwenden.
Wenn Sie einen RESTful-Webdienst implementieren, wird die Antwort immer über den Antworttext gesendet. Um die Entwicklung zu vereinfachen, bietet Spring 4.0 eine spezielle Version des Controllers. Werfen wir einen Blick auf die Definition der @RestController-Implementierung:@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Controller @ResponseBody public @interface RestController @Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Controller @ResponseBody public @interface RestController
Routing-Informationen. Es teilt Spring mit, dass jede HTTP-Anfrage, die vom Pfad „/“ kommt, der Home-Methode zugeordnet werden soll. Die @RestController-Annotation weist Spring an, das Ergebnis in Form von string zu rendern und direkt an den Aufrufer zurückzugeben.
Hinweis: @RestController- und @RequestMapping-Annotationen sind Spring MVC-Annotationen (sie sind keine spezifischen Teile von Spring Boot)
@EnableAutoConfiguration-Annotation
Die zweite Annotation auf Klassenebene ist @EnableAutoConfiguration. Diese Annotation weist Spring Boot an, anhand der hinzugefügten JAR-Abhängigkeiten zu erraten, wie Sie Spring konfigurieren möchten. Da spring-boot-starter-web Tomcat und Spring MVC hinzufügt, geht die automatische Konfiguration davon aus, dass Sie eine Webanwendung entwickeln und richtet Spring entsprechend ein. Starter-POMs und automatische Konfiguration: Der Zweck des Entwurfs der automatischen Konfiguration besteht darin, „Starter-POMs“ besser zu nutzen, die beiden Konzepte stehen jedoch nicht in direktem Zusammenhang. Es steht Ihnen frei, JAR-Abhängigkeiten außerhalb der Starter-POMs zu wählen, und Spring Boot wird dennoch sein Bestes tun, um Ihre Anwendung automatisch zu konfigurieren. Sie können die automatische Konfiguration auswählen, indem Sie die Annotation @EnableAutoConfiguration oder @SpringBootApplication zu einer @Configuration-Klasse hinzufügen.der Annotation @EnableAutoConfiguration deaktivieren.
<pre name="code" class="java">import org.springframework.boot.autoconfigure.*; import org.springframework.boot.autoconfigure.jdbc.*; import org.springframework.context.annotation.*; @Configuration @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration { } <pre name="code" class="java">import org.springframework.boot.autoconfigure.*; import org.springframework.boot.autoconfigure.jdbc.*; import org.springframework.context.annotation.*; @Configuration @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration { } @Configuration
XML-Quelle verwenden können, empfehlen wir im Allgemeinen, dass Sie eine @Configuration-Klasse als primäre Quelle verwenden. Klassen, die im Allgemeinen eine main-Methode definieren, sind auch ein guter Kandidat für die Haupt-@Configuration. Sie müssen nicht alle @Configuration in einer einzigen Klasse zusammenfassen. Die Annotation @Import kann zum Importieren anderer Konfigurationsklassen verwendet werden. Alternativ können Sie die Annotation @ComponentScan verwenden, um alle Spring-Komponenten, einschließlich @Configuration-Klassen, automatisch zu erfassen.
Wenn Sie unbedingt eine XML-basierte Konfiguration verwenden müssen, empfehlen wir Ihnen, dennoch mit einer @Configuration-Klasse zu beginnen. Sie können XMLKonfigurationsdateien mithilfe der zusätzlichen Annotation @ImportResource laden.
Die @Configuration-Annotation dieser Klasse entspricht der Konfiguration von Beans in XML. Die Verwendung der @Bean-Annotationsmethode entspricht der Konfiguration von Beans in XML.@ComponentScan(basePackages = "com.hyxt",includeFilters = {@ComponentScan.Filter(Aspect.class)}) @ComponentScan(basePackages = "com.hyxt",includeFilters = {@ComponentScan.Filter(Aspect.class)}) @SpringBootApplication
package com.example.myproject; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } package com.example.myproject; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
constraints zu Ihrer @ConfigurationProperties-Klasse hinzufügen:
@Component @ConfigurationProperties(prefix="connection") public class ConnectionSettings { @NotNull private InetAddress remoteAddress; // ... getters and setters } @Component @ConfigurationProperties(prefix="connection") public class ConnectionSettings { @NotNull private InetAddress remoteAddress; // ... getters and setters } @Profiles Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。 [java] view plain copy print?在CODE上查看代码片派生到我的代码片 @Configuration @Profile("production") public class ProductionConfiguration { // ... } @Configuration @Profile("production") public class ProductionConfiguration { // ... }@ResponseBody
asynchron
json-Daten ab, und nach dem Hinzufügen von @responsebody werden die JSON-Daten direkt zurückgegeben.
@Component:
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。一般公共的方法我会用上这个注解
@AutoWired
byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构
造函数进行标注,完成自动装配的工作。
当加上(required=false)时,就算找不到bean也不报错。
@RequestParam:
用在方法的参数前面。
@RequestParam String a =request.getParameter("a")。 @RequestParam String a =request.getParameter("a")。
@PathVariable:
路径变量。
RequestMapping("user/get/mac/{macAddress}") public String getByMacAddress(@PathVariable String macAddress){ //do something; } RequestMapping("user/get/mac/{macAddress}") public String getByMacAddress(@PathVariable String macAddress){ //do something; }
参数与大括号里的名字一样要相同。
以上注解的示范
/** * 用户进行评论及对评论进行管理的 Controller 类; */ @Controller @RequestMapping("/msgCenter") public class MyCommentController extends BaseController { @Autowired CommentService commentService; @Autowired OperatorService operatorService; /** * 添加活动评论; * * @param applyId 活动 ID; * @param content 评论内容; * @return */ @ResponseBody @RequestMapping("/addComment") public Map<String, Object> addComment(@RequestParam("applyId") Integer applyId, @RequestParam("content") String content) { .... return result; } } /** * 用户进行评论及对评论进行管理的 Controller 类; */ @Controller @RequestMapping("/msgCenter") public class MyCommentController extends BaseController { @Autowired CommentService commentService; @Autowired OperatorService operatorService; /** * 添加活动评论; * * @param applyId 活动 ID; * @param content 评论内容; * @return */ @ResponseBody @RequestMapping("/addComment") public Map<String, Object> addComment(@RequestParam("applyId") Integer applyId, @RequestParam("content") String content) { .... return result; } } @RequestMapping("/list/{applyId}") public String list(@PathVariable Long applyId, HttpServletRequest request, ModelMap modelMap) { } @RequestMapping("/list/{applyId}") public String list(@PathVariable Long applyId, HttpServletRequest request, ModelMap modelMap) { }
全局处理异常的:
@ControllerAdvice:
包含@Component。可以被扫描到。
统一处理异常。
@ExceptionHandler(Exception.class):
用在方法上面表示遇到这个异常就执行以下方法。
/** * 全局异常处理 */ @ControllerAdvice class GlobalDefaultExceptionHandler { public static final String DEFAULT_ERROR_VIEW = "error"; @ExceptionHandler({TypeMismatchException.class,NumberFormatException.class}) public ModelAndView formatErrorHandler(HttpServletRequest req, Exception e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("error","参数类型错误"); mav.addObject("exception", e); mav.addObject("url", RequestUtils.getCompleteRequestUrl(req)); mav.addObject("timestamp", new Date()); mav.setViewName(DEFAULT_ERROR_VIEW); return mav; }} /** * 全局异常处理 */ @ControllerAdvice class GlobalDefaultExceptionHandler { public static final String DEFAULT_ERROR_VIEW = "error"; @ExceptionHandler({TypeMismatchException.class,NumberFormatException.class}) public ModelAndView formatErrorHandler(HttpServletRequest req, Exception e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("error","参数类型错误"); mav.addObject("exception", e); mav.addObject("url", RequestUtils.getCompleteRequestUrl(req)); mav.addObject("timestamp", new Date()); mav.setViewName(DEFAULT_ERROR_VIEW); return mav; }}
通过@value注解来读取application.properties里面的配置
# face++ key face_api_key = R9Z3Vxc7ZcxfewgVrjOyrvu1d-qR**** face_api_secret =D9WUQGCYLvOCIdsbX35uTH******** # face++ key face_api_key = R9Z3Vxc7ZcxfewgVrjOyrvu1d-qR**** face_api_secret =D9WUQGCYLvOCIdsbX35uTH******** @Value("${face_api_key}") private String API_KEY; @Value("${face_api_secret}") private String API_SECRET; @Value("${face_api_key}") private String API_KEY; @Value("${face_api_secret}") private String API_SECRET;所以一般常用的配置都是配置在application.properties文件的
【相关推荐】
1. 特别推荐:“php程序员工具箱”V0.1版本下载
2. Java免费视频教程
3. JAVA教程手册
Das obige ist der detaillierte Inhalt vonFassen Sie einige der am häufigsten verwendeten Anmerkungen in Java zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!