Spring SpringMVC SpringBoot SpringCloud 注解整理
才開的博客所以放了一篇以前整理的文檔,如果有需要添加修改的地方歡迎指正,我會修改的φ(๑˃∀˂๑)♪
Spring 常用配置:
-
@import :導入配置類
-
@Scope : 新建Bean的實例 @Scope("prototype") 聲明Scope 為 Prototype
-
@Value : 屬性注入
-
-
@Value ("我愛你") --> 普通字符串注入
-
@Value ("#{systemProperties['os.name']}") -->注入操作系統屬性
-
@Value ("#{ T (java.lang.Math).random() * 100.0 }") --> 注入表達式結果
-
@Value ("#{demoService.another}") --> 注入其他Bean屬性
-
@Value ( "classpath:com/wisely/highlight_spring4/ch2/el/test.txt" ) --> 注入文件資源
-
@Value ("http://www.baidu.com")-->注入網址資源
-
@Value ("${book.name}" ) --> 注入配置文件 注意: 使用的是$ 而不是 #
-
-
@PostConstruct : 在構造函數執行完之后執行
-
@PreDestroy : 在 Bean 銷毀之前執行
-
@ActiveProfiles : 用來聲明活動的 profile
-
@profile: 為不同環境下使用不同的配置提供了支持
-
-
@Profile("dev") .......對方法名為 dev-xxxx的方法提供實例化Bean
-
-
@EnableAsync : 開啟異步任務的支持(多線程)
-
@Asyns : 聲明這是一個異步任務,可以在類級別 和方法級別聲明.
-
@EnableScheduling : 開啟對計划任務的支持(定時器)
-
@Scheduled : 聲明這是一個計划任務 支持多種計划任務,包含 cron. fixDelay fixRate
-
-
@Scheduled (dixedDelay = 5000) 通過注解 定時更新
-
-
@Conditional : 條件注解,根據滿足某一特定條件創建一個特定的Bean
-
@ContextConfiguration : 加載配置文件
-
-
@ContextConfiguration(classes = {TestConfig.class})
-
@ContextConfiguration用來加載ApplicationContext
-
classes屬性用來加載配置類
-
-
@WebAppCofiguration : 指定加載 ApplicationContext是一個WebApplicationContext
spring AOP切面編程(事務)注解:
-
@Aspect : 聲明這是一個切面
-
@After @Before. @Around @AfterThrowing @AfterReturning
-
定義切面,,可以直接將攔截規則(切入點 PointCut)作為參數
-
@PointCut : 專門定義攔截規則 然后在 @After @Before. @Around 中調用
-
@Transcational : 事務處理
-
@EnableTransactionManagement 開啟對注解式事物的支持
-
@Cacheable : 數據緩存
-
@EnableAaspectJAutoProxy : 開啟Spring 對 這個切面(Aspect )的支持
-
@Target (ElementType.TYPE):元注解,用來指定注解修飾類的那個成員 -->指定攔截規則
-
@Retention(RetentionPolicy.RUNTIME)
-
-
--->當定義的注解的@Retention為RUNTIME時,才能夠通過運行時的反射機制來處理注解.-->指定攔截規則
-
-
聲明Bean的注解:
-
@Component : 組件,沒有明確的角色
-
@Service : 在業務邏輯層(service層)使用
-
@Repository : 在數據訪問層(dao層)使用.
-
@Controller : 在展現層(MVC--SpringMVC)使用
注入Bean的注解:
-
@Aautowired : Spring提供的注解.
-
@Inject : JSR-330提供的注解
-
@Resource : JSR-250提供的注解
配置文件的注解:
-
@Configuration : 聲明當前類是個配置類,相當於一個Spring配置的xml文件.
-
@ComponentScan (cn.test.demo): 自動掃描包名下所有使用 @Component @Service @Repository @Controller 的類,並注冊為Bean
-
@WiselyConfiguration : 組合注解 可以替代 @Configuration和@ComponentScan
-
@Bean : 注解在方法上,聲明當前方法的返回值為一個Bean.
-
@Bean(initMethod="aa",destroyMethod="bb")--> 指定 aa和bb方法在構造之后.Bean銷毀之前執行.
-
@Enable*注解:
-
@EnableAsync : 開啟異步任務的支持(多線程)
-
@EnableScheduling : 開啟對計划任務的支持(定時器)
-
@EnableWebMVC : 開啟對Web MVC 的配置支持
-
@EnableAaspectJAutoProxy : 開啟Spring 對 這個切面(Aspect )的支持
-
@EnableConfigurationProperties 開啟對@ConfigurationProperties注解配置Bean的支持
-
@EnableJpaRepositories : 開啟對Spring Data JAP Repository 的支持
-
@EnableTransactionManagement 開啟對注解式事物的支持
-
@EnableDiscoveryClient 讓服務發現服務器,使用服務器.Spring cloud 實現服務發現
-
@EnableEurekaServer 注冊服務器 spring cloud 實現服務注冊@
-
@EnableScheduling 定時器!讓spring可以進行任務調度,功能類似於spring.xml文件中的命名空間
-
@EnableCaching 開啟Cache緩存支持;
SpringMVC 常用注解:
-
@Controller : 注解在類上 聲明這個類是springmvc里的Controller,將其聲明為一個spring的Bean.
-
@RequestMapping :可以注解在類上和方法上 映射WEB請求(訪問路徑和參數)
-
@RequestMapping(value= "/convert",produces+{"application/x-wisely"}) 設置訪問URL 返回值類型
-
@ResponseBody : 支持將返回值放入response體內 返回json格式數據!而不是返回一個頁面(返回的是一個組數據)
-
@RequestBody : 允許request的參數在request體中,而不是直接連接在地址后面 次注解放置在參數前獲取體中的json格式數據
-
@Path Variable : 用來接收路徑參數 如/test/001,001為參數,次注解放置在參數前
-
@RestController : @Controller + @ResponseBody 組合注解
-
@ControllerAdvice : 通過@ControllerAdvice可以將對已控制器的全局配置放置在同一個位置
-
@ExceptionHandler : 用於全局處理控制器的異常
-
@ExceptionHandier(value=Exception.class) -->通過value屬性可過濾攔截器條件,攔截所有的異常
-
@InitBinder : 用來設置WebDataBinder , WebDataBinder用來自動綁定前台請求參數到Model中.
-
@ModelAttrbuute : 綁定鍵值對到Model中,
-
@RunWith : 運行器
-
-
@RunWith(JUnit4.class)就是指用JUnit4來運行
-
@RunWith(SpringJUnit4ClassRunner.class),讓測試運行於Spring測試環境
-
@RunWith(Suite.class)的話就是一套測試集合,
-
-
@WebAppConfiguration("src/main/resources") : 注解在類上,用來聲明加載的ApplicationContex 是一個WebApplicationContext ,它的屬性指定的是Web資源的位置,默認為 src/main/webapp ,自定義修改為 resource
-
@Before : 在 xxx 前初始化
-
@RequestMapping
@RequestParam
@ResponseBody
@RequestBody
@PathVariable
@RestController
@CookieValue
@ModelAttributes
@SessionAttributes
Spring Boot 注解:
-
@SpringBootApplication : 是Spring Boot 項目的核心注解 主要目的是開啟自動配置
-
-
@SpringBootApplication注解是一個組合注解,主要組合了@Configuration .+@EnableAutoConfiguration.+@ComponentScan
-
-
@Value : 屬性注入,讀取properties或者 Yml 文件中的屬性
-
@ConfigurationProperties : 將properties屬性和一個Bean及其屬性關聯,從而實現類型安全的配置
-
-
@ConfigurationProperties(prefix = "author",locations = {"classpath:config/author.properties"})
-
通過@ConfigurationProperties加載配置,通過prefix屬性指定配置前綴,通過location指定配置文件位置
-
-
@EnableAutoConfiguration 注解:作用在於讓 Spring Boot 根據應用所聲明的依賴來對 Spring 框架進行自動配置 這個注解告訴Spring Boot根據添加的jar依賴猜測你想如何配置Spring。由於
spring-boot-starter-web
添加了Tomcat和Spring MVC,所以auto-configuration將假定你正在開發一個web應用並相應地對Spring進行設置。 -
@ Configuration 注解,以明確指出該類是 Bean 配置的信息源
-
@ComponentScan 注解會告知Spring掃描指定的包來初始化Spring Bean這能夠確保我們聲明的Bean能夠被發現。
-
@ImportResource 注解加載XML配置文件
-
@EnableAutoConfiguration(exclude={xxxx.class}) 禁用特定的自動配置
-
@SpringBootApplication 注解等價於以默認屬性使用@Configuration,@EnableAutoConfiguration和 @ComponentScan。
@SuppressWarnings注解
-
@SuppressWarnings("unchecked")
-
-
告訴編譯器忽略 unchecked 警告信息,如使用 list ArrayList等未進行參數化產生的警告信息
-
-
@SuppressWarnings("serial")
-
-
如果編譯器出現這樣的警告信息: The serializable class WmailCalendar does not declare a static final serialVersionUID field of type long 使用這個注釋將警告信息去掉。
-
-
@SuppressWarnings("deprecation")
-
-
如果使用了使用@Deprecated注釋的方法,編譯器將出現警告信息。使用這個注釋將警告信息去掉。
-
-
@SuppressWarnings("unchecked", "deprecation")
-
-
告訴編譯器同時忽略unchecked和deprecation的警告信息。
-
-
@SuppressWarnings(value={"unchecked", "deprecation"})
-
-
等同於@SuppressWarnings("unchecked", "deprecation")
-
案例
@Entity : 映射數據庫實體類
@Table(name ="S_PRODUCEINFO") : 表名為 "S_PRODUCEINFO"
@Id : 聲明主鍵ID
@Column(name ="app_name", unique =**true**, length = 50) :對應數據庫字段,屬性
@Enumerated(EnumType.**STRING**) : 采用枚舉值類型和數據庫字段進行交互
@Temporal : 時間格式 映射數據庫會得到規定時間格式的日期
• @Enumerted(EnumType.STRING) HH:MM:SS 格式的日期
• @Enumerted(EnumType.DATE) 獲取年月日 yyyy-MM-dd
• @Enumerted(EnumType.TIME) 獲取時分秒 HH:MM:SS
•
springcloud 常用 注解
- @Controller 控制層,里面有多個連接
- @Service 業務層,一般對於接口和實現
- @Qualifier 如果一個接口有多個實現,那么注入時候加上唯一標示
- @Repository 一般的dao層
- @Autowired 自動注入依賴
- @Resource bean的注入,同Autowired 有相同的功能。
- @Resource和@Autowired區別說明:
共同點:@Resource和@Autowired都可以作為注入屬性的修飾,在接口僅有單一實現類時,兩個注解的修飾效果相同,可以互相替換,不影響使用。
不同點: @Resource是Java自己的注解,@Resource有兩個屬性是比較重要的,分是name和type;Spring將@Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。所以如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。 @Autowired是spring的注解,是spring2.5版本引入的,Autowired只根據type進行注入,不會去匹配name。如果涉及到type無法辨別注入對象時,那需要依賴@Qualifier或@Primary注解一起來修飾。
- @Component定義其它組件(比如訪問外部服務的組件)
- @RequestMapping (value=’’,method={RequestMethod。GET或者POSt})綁定url
- @RequestParam (value=’’ required=false)綁定參數,將客戶端請求中的參數值映射到相應方法的參數上;
- @ModelAttribute 一般用於controller層,唄注解的方法會在所以mapping執行之前執行,並且可以綁定參數到Model model里面。
- @Transactional (readOnly=true)注解式事務
- @TransactionalEventListener用於配置事務的回調方法,可以在事務提交前、提交后、完成后以及回滾后幾個階段接受回調事件。
- @Value(“${}”)可以注入properties里面的配置項
- @ControllerAdvice 是spring3提供的新注解
- @ExceptionHandler 如果在controller方法遇到異常,就會調用含有此注解的方法。
- @InitBinder 一般用於controller 可以將所以form 講所有傳遞進來的string 進行html編碼,防止xss攻擊,比如可以將字符串類型的日期轉換成date類型
- @EnableCaching 注解自動化配置合適的緩存管理器。
- @EnableWebSecurity 注解開啟spring security的功能,集成websercrityconfigureadapter。
- @SringBootApplication相當於@configuration,@EnableAutoConfiguation @ComponentScan三個注解合用。
- @EnableDiscoveryclient 注冊應用為Eureka客戶端應用,以獲得服務發現的能力
- @EnableAdminServer 使用admin監控應用。
- @EnableEurekaClient配置本應用將使用服務注冊和服務發現,注意:注冊和發現用這個注解。
- @EnableEurekaServer 啟動一個服務注冊中心 @EnableHystrix表示啟動斷路器,斷路器依賴於服務注冊和發現。
- @HystrixCommand注解方法失敗后,系統將西東切換到fallbackMethod方法執行。指定回調方法
- @EnableCircuitBreaker//對hystrixR熔斷機制的支持
- @EnableAutoConfiguration spring boot自動配置,嘗試根據你添加的jar依賴自動配置你的spring應用。
- @ComponentScan 表示將該類自動發現並注冊bean 可以自動收集所有的spring組件
- @Comfiguration 相當於傳統的xml配置文件
- @EnableHystrixDashboard//啟動hystrix Board 服務監控
- @Import 導入其他配置類
- @ImportResource用來 加載xml配置文件
- @RestController 返回json字符串的數據,直接可以編寫RESTFul的接口;
- @CrossOrigin 可以處理跨域請求,讓你能訪問不是一個域的文件;
- @ApiOperation 首先@ApiOperation注解不是Spring自帶的,它是是swagger里的注解@ApiOperation是用來構建Api文檔的@ApiOperation(value = “接口說明”, httpMethod = “接口請求方式”, response = “接口返回參數類型”, notes = “接口發布說明”;
- @SpringBootApplication 申明讓spring boot自動給程序進行必要的配置,等價於以默認屬性使用@Configuration,@EnableAutoConfiguration和@ComponentScan; @RefreshScope 如果代碼中需要動態刷新配置,在需要的類上加上該注解就行。但某些復雜的注入場景下,這個注解使用不當,配置可能仍然不動態刷新;
- @FeignClient springboot調用外部接口:聲明接口之后,在代碼中通過@Resource注入之后即可使用。
- @FeignClient標簽的常用屬性如下:name:指定FeignClient的名稱,如果項目使用了Ribbon,name屬性會作為微服務的名稱,用於服務發現
- @FeignClient注解中的fallbank屬性指定回調類
- @EnableFeignClients 開啟Spring Cloud Feign的支持
- @EnableCircuitBreaker 開啟斷路器功能
- @LoadBalanced 開啟客戶端負載均衡
- @WebAppConfiguration 開啟Web 應用的配置,用於模擬ServletContext
- @RibbonClient,這個注解用來為負載均衡客戶端做一些自定義的配置,可以進一步配置或自定義從哪里獲取服務端列表、負載均衡策略、Ping也就是服務鑒活策略等等
Lombok提供注解方式
目的:來提高代碼的簡潔性,常用注解概覽:
-
-
@Data:注解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法,相當於同時加上以下注解@Setter @Getter,@ToString,@EqualsAndHashCode
-
@Setter、@Getter:注解在類和屬性上;為屬性提供 setting、getting 方法
-
@ToString:生成toString方法,默認情況下,會輸出類名、所有屬性,屬性按照順序輸出,以逗號分割。
-
@EqualsAndHashCode:實現equals()方法和hashCode()方法
-
*@Builder:構建 建造者模式*
-
@NonNull:該注解快速判斷是否為空,如果為空,則拋出java.lang.NullPointerException
-
@Synchronized:該注解自動添加到同步機制,有趣的是,生成的代碼並不是直接鎖方法,而是鎖代碼塊, 作用范圍是方法上
-
@Log4j :注解在類上;為類提供一個 屬性名為log 的 log4j 日志對象
-
*@NoArgsConstructor:注解在類上;為類提供一個無參的構造方法*
-
@RequiredArgsConstructor:注解在類上;為類提供一個部分參的構造方法(使用類中所有帶有@NonNull注解的或者帶有final修飾的成員變量生成對應的構造方法)
-
*@AllArgsConstructor:注解在類上;為類提供一個全參的構造方法*
-
@Cleanup:用於確保已分配的資源被釋放,如IO的連接關閉
-
@SneakyThrows:拋異常
-
-