总结java中最常用的几个注解
这篇文章主要介绍了spring boot 的常用注解使用小结,需要的朋友可以参考下
@RestController和@RequestMapping注解
4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解。4.0之前的版本,Spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet。使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的@RestController。
当你实现一个RESTful web services的时候,response将一直通过response body发送。为了简化开发,Spring 4.0提供了一个专门版本的controller。下面我们来看看@RestController实现的定义:
@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Controller @ResponseBody public @interface RestController @Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Controller @ResponseBody public @interface RestController
@RequestMapping 注解提供路由信息。它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到 home 方法。 @RestController 注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。
注: @RestController 和 @RequestMapping 注解是Spring MVC注解(它们不是Spring Boot的特定部分)
@EnableAutoConfiguration注解
第二个类级别的注解是 @EnableAutoConfiguration 。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于 spring-boot-starter-web 添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。Starter POMs和Auto-Configuration:设计auto-configuration的目的是更好的使用"Starter POMs",但这两个概念没有直接的联系。你可以自由地挑选starter POMs以外的jar依赖,并且Spring Boot将仍旧尽最大努力去自动配置你的应用。
你可以通过将 @EnableAutoConfiguration 或 @SpringBootApplication 注解添加到一个 @Configuration 类上来选择自动配置。
注:你只需要添加一个 @EnableAutoConfiguration 注解。我们建议你将它添加到主 @Configuration 类上。
如果发现应用了你不想要的特定自动配置类,你可以使用 @EnableAutoConfiguration 注解的排除属性来禁用它们。
<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提倡基于Java的配置。尽管你可以使用一个XML源来调用 SpringApplication.run() ,我们通常建议你使用 @Configuration 类作为主要源。一般定义 main 方法的类也是主要 @Configuration 的一个很好候选。你不需要将所有的 @Configuration 放进一个单独的类。 @Import 注解可以用来导入其他配置类。另外,你也可以使用 @ComponentScan 注解自动收集所有的Spring组件,包括 @Configuration 类。
如果你绝对需要使用基于XML的配置,我们建议你仍旧从一个 @Configuration 类开始。你可以使用附加的 @ImportResource 注解加载XML配置文件。
@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean
@ComponentScan(basePackages = "com.hyxt",includeFilters = {@ComponentScan.Filter(Aspect.class)}) @ComponentScan(basePackages = "com.hyxt",includeFilters = {@ComponentScan.Filter(Aspect.class)}) @SpringBootApplication
很多Spring Boot开发者总是使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。由于这些注解被如此频繁地一块使用(特别是你遵循以上最佳实践时),Spring Boot提供一个方便的 @SpringBootApplication 选择。
该 @SpringBootApplication 注解等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 。
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将尝试校验外部的配置,默认使用JSR-303(如果在classpath路径中)。你可以轻松的为你的@ConfigurationProperties类添加JSR-303 javax.validation约束注解:
@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
表示该方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上
@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如
异步获取json数据,加上@responsebody后,会直接返回json数据。
@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教程手册
Atas ialah kandungan terperinci 总结java中最常用的几个注解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas


![Fail ISO Windows terlalu besar ralat BootCamp [Tetap]](https://img.php.cn/upload/article/000/887/227/170831702395455.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Jika anda mendapat mesej ralat "Fail ISO Windows terlalu besar" apabila menggunakan BootCampAssistant pada komputer Mac, ini mungkin kerana saiz fail ISO melebihi had yang disokong oleh BootCampAssistant. Penyelesaian kepada masalah ini ialah menggunakan alat lain untuk memampatkan saiz fail ISO untuk memastikan ia boleh diproses dalam Pembantu BootCamp. BootCampAssistant ialah alat mudah yang disediakan oleh Apple untuk memasang dan menjalankan sistem pengendalian Windows pada komputer Mac. Ia membantu pengguna menyediakan sistem dwi-but, membolehkan mereka dengan mudah memilih untuk menggunakan MacOS atau Wind pada permulaan

Pada tahun 2023, teknologi AI telah menjadi topik hangat dan memberi impak besar kepada pelbagai industri, terutamanya dalam bidang pengaturcaraan. Orang ramai semakin menyedari kepentingan teknologi AI, dan komuniti Spring tidak terkecuali. Dengan kemajuan berterusan teknologi GenAI (General Artificial Intelligence), ia menjadi penting dan mendesak untuk memudahkan penciptaan aplikasi dengan fungsi AI. Dengan latar belakang ini, "SpringAI" muncul, bertujuan untuk memudahkan proses membangunkan aplikasi berfungsi AI, menjadikannya mudah dan intuitif serta mengelakkan kerumitan yang tidak perlu. Melalui "SpringAI", pembangun boleh membina aplikasi dengan lebih mudah dengan fungsi AI, menjadikannya lebih mudah untuk digunakan dan dikendalikan.

Cara melaksanakan transaksi terprogram musim bunga: 1. Gunakan TransactionTemplate 2. Gunakan TransactionCallback dan TransactionCallbackWithoutResult 3. Gunakan anotasi Transaksional;

Sebagai peneraju industri, Spring+AI menyediakan penyelesaian terkemuka untuk pelbagai industri melalui API yang berkuasa, fleksibel dan fungsi lanjutannya. Dalam topik ini, kami akan menyelidiki contoh aplikasi Spring+AI dalam pelbagai bidang Setiap kes akan menunjukkan cara Spring+AI memenuhi keperluan khusus, mencapai matlamat dan meluaskan LESSONSLEARNED ini kepada rangkaian aplikasi yang lebih luas. Saya harap topik ini dapat memberi inspirasi kepada anda untuk memahami dan menggunakan kemungkinan Spring+AI yang tidak terhingga dengan lebih mendalam. Rangka kerja Spring mempunyai sejarah lebih daripada 20 tahun dalam bidang pembangunan perisian, dan sudah 10 tahun sejak versi Spring Boot 1.0 dikeluarkan. Sekarang, tiada siapa boleh mempertikaikan Spring itu

Anotasi dalam rangka kerja JUnit digunakan untuk mengisytiharkan dan mengkonfigurasi kaedah ujian Anotasi utama termasuk: @Ujian (pengisytiharan kaedah ujian), @Sebelum (kaedah dijalankan sebelum kaedah ujian dilaksanakan), @Selepas (kaedah dijalankan selepas kaedah ujian. dilaksanakan), @ BeforeClass (kaedah yang dijalankan sebelum semua kaedah ujian dilaksanakan), @AfterClass (kaedah yang dijalankan selepas semua kaedah ujian dilaksanakan), anotasi ini membantu mengatur dan memudahkan kod ujian dan meningkatkan kebolehpercayaan kod ujian dengan menyediakan niat dan konfigurasi yang jelas.

Pengenalan: PHPDoc ialah standard ulasan untuk kod PHP yang menghasilkan dokumentasi yang mudah difahami dan bermaklumat. Dengan menggunakan tag ulasan khusus, PHPDoc membenarkan pembangun memberikan butiran penting tentang fungsi, kelas, kaedah dan elemen kod lain. Panduan lanjutan ini melihat secara mendalam pada PHPDoc, menunjukkan keupayaannya dan menyediakan strategi dokumentasi yang berkesan. Sintaks dan teg: Komen PHPDoc bermula dengan garis miring berganda (//) atau komen berbilang baris (/**/). Berikut ialah beberapa teg anotasi biasa: @param: Mentakrifkan parameter fungsi atau kaedah. @return: Menentukan nilai pulangan fungsi atau kaedah. @throws: Menerangkan pengecualian yang mungkin dilemparkan oleh fungsi atau kaedah. @var: mentakrifkan atribut atau kejadian kelas

Anotasi dalam perpustakaan Jackson mengawal pensirilan dan penyahserilangan JSON: Pensirilan: @JsonIgnore: Abaikan harta @JsonProperty: Tentukan nama @JsonGetter: Gunakan kaedah get @JsonSetter: Gunakan kaedah yang ditetapkan Deserialization: @JsonIgnoreProperties: Abaikan harta @ JsonProperty: Nyatakan nama @JsonCreator: Gunakan pembina @JsonDeserialize: Logik tersuai

Pengenalan terperinci kepada penggunaan SQL MyBatis anotasi dinamik MyBatis ialah rangka kerja lapisan kegigihan yang memberikan kami operasi kegigihan yang mudah. Dalam pembangunan sebenar, biasanya diperlukan untuk menjana pernyataan SQL secara dinamik berdasarkan keperluan perniagaan untuk mencapai operasi data yang fleksibel. SQL dinamik anotasi MyBatis direka untuk memenuhi permintaan ini.
