Heim  >  Artikel  >  Java  >  Fassen Sie einige der am häufigsten verwendeten Anmerkungen in Java zusammen

Fassen Sie einige der am häufigsten verwendeten Anmerkungen in Java zusammen

Y2J
Y2JOriginal
2017-05-16 09:42:161489Durchsuche

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
Die Annotation @RequestMapping liefert

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.


Hinweis: Sie müssen nur eine @EnableAutoConfiguration-Annotation hinzufügen. Wir empfehlen, es zur Hauptklasse @Configuration hinzuzufügen.

Wenn Sie feststellen, dass bestimmte Autokonfigurationsklassen angewendet werden, die Sie nicht möchten, können Sie sie mithilfe des Ausschlussattributs

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
Spring Boot befürwortet eine Java-basierte Konfiguration. Obwohl Sie zum Aufrufen von SpringApplication.run() eine

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 XML

Konfigurationsdateien 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
Viele Spring Boot-Entwickler verwenden immer @Configuration. @EnableAutoConfiguration und @ComponentScan kommentieren ihre Hauptklassen. Da diese Anmerkungen so häufig zusammen verwendet werden (insbesondere wenn Sie die oben genannten Best Practices befolgen), bietet Spring Boot eine praktische @SpringBootApplication-Alternative.

Die Annotation @SpringBootApplication entspricht der Verwendung von @Configuration , @EnableAutoConfiguration und @ComponentScan mit Standardeigenschaften.

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);
  }
}
Spring Boot versucht, die externe Konfiguration zu überprüfen und verwendet dabei standardmäßig JSR-303 (sofern es sich im Klassenpfad befindet). Sie können ganz einfach die Annotation JSR-303 javax.validation

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
gibt an, dass das Rückgabeergebnis dieser Methode direkt in den HTTP-Antworttext geschrieben wird

wird im Allgemeinen beim asynchronen Abrufen von Daten verwendet. Nach der Verwendung von @RequestMapping wird der Rückgabewert normalerweise als Sprungpfad analysiert. Nach dem Hinzufügen von

@responsebody wird das Rückgabeergebnis nicht als Sprung analysiert Der Pfad wird direkt in den HTTP-Antworttext geschrieben. Beispielsweise ruft

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn