Maven Spring boot項目學習筆記 注解的學習

聲明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銷毀之前執行.


AOP切面編程注解:

@Aspect : 聲明這是一個切面?

@After @Before. @Around 定義切面,可以直接將攔截規則(切入點 PointCut)作為參數

@PointCut : 專門定義攔截規則 然后在?@After @Before. @Around 中調用

@Transcational : 事務處理

@Cacheable : 數據緩存

@EnableAaspectJAutoProxy : 開啟Spring 對 這個切面(Aspect )的支持

@Target (ElementType.TYPE):元注解,用來指定注解修飾類的那個成員 -->指定攔截規則

@Retention(RetentionPolicy.RUNTIME)?

--->當定義的注解的@Retention為RUNTIME時,才能夠通過運行時的反射機制來處理注解.-->指定攔截規則


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

@Enable*注解:

@EnableAsync : 開啟異步任務的支持(多線程)

@EnableScheduling : 開啟對計劃任務的支持(定時器)

@EnableWebMVC : 開啟對Web MVC 的配置支持

@EnableAaspectJAutoProxy : 開啟Spring 對 這個切面(Aspect )的支持

@EnableConfigurationProperties 開啟對@ConfigurationProperties注解配置Bean的支持

@EnableJpaRepositories : 開啟對Spring Data JAP Repository 的支持

@EnableTransactionManagement 開啟對注解式事物的支持

@EnableCaching開啟注解是緩存的支持.

@EnableDiscoveryClient 讓服務發現服務器,使用服務器.Spring cloud 實現服務發現

@EnableEurekaServer 注冊服務器 spring cloud 實現服務注冊@

@EnableScheduling 讓spring可以進行任務調度,功能類似于spring.xml文件中的命名空間<task:*>

@EnableCaching 開啟Cache緩存支持;

SpringMVC 常用注解:

@Controller : 注解在類上 聲明這個類是springmvc里的Controller,將其聲明為一個spring的Bean.

@RequestMapping :可以注解在類上和方法上 映射WEB請求(訪問路徑和參數)

@RequestMapping(value= "/convert",produces+{"application/x-wisely"}) 設置訪問URL 返回值類型

@ResponseBody : 支持將返回值放入response體內 而不是返回一個頁面(返回的是一個組數據)

@RequestBody : 允許request的參數在request體中,而不是直接連接在地址后面 次注解放置在參數前

@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 前初始化


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")

@Data

@NoArgsConstructor

@AllArgsConstructor

publicclassProduceInfoEntity {


????@Id

@Column(name =?"app_name", unique =true, length = 50)

privateStringname;


????@Column(name =?"status")

@Enumerated(EnumType.STRING)

privateProduceStatusstatus;


@Column(name =?"create_time", updatable =false)

@Temporal(TemporalType.TIMESTAMP)

????@CreationTimestamp

privateDatecreateTime;


????@Column(name =?"update_time")

@Temporal(TemporalType.TIMESTAMP)

????@UpdateTimestamp

privateDateupdateTime;

?

@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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,106評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,441評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,211評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,736評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,475評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,834評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,829評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,009評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,559評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,306評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,516評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,038評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,728評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,132評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,443評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,249評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,484評論 2 379

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,826評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,922評論 6 342
  • 1.1 spring IoC容器和beans的簡介 Spring 框架的最核心基礎的功能是IoC(控制反轉)容器,...
    simoscode閱讀 6,743評論 2 22
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,506評論 1 92
  • #抓大放小#。學習一門科學,掌握一門技術,熟悉一個系統,都需要按照抓大放小的方法論來做,不能太陷入與細節,這樣很容...
    亞細亞之光閱讀 201評論 0 0