總結項目中我們常用的注解
注解產生的原因
給大家看看SSM項目的配置文件!
applicationContext.xml文件
在使用注解之前,XML被廣泛用于框架的配置,開發(fā)人員和架構師認為XML維護變得越來越麻煩。
開發(fā)速度相對較慢,編譯時很難檢查出錯誤, 運行中的錯誤很難定位, 調試難度較大。后來注解開發(fā)的方式應運而生,
注入bean的時,一個注解搞定,接收http請求時,一個注解搞定。輕松高效,出現bug很快就能解決
xml 和 注解的使用場景與區(qū)別
注解:是一種分散式的元數據,與源代碼緊綁定。
xml:是一種集中式的元數據,與源代碼無綁定。
注解與注釋?
注釋:給程序員去看
注解:給計算機去看
Java注解: JDK5.0 引入的一種注釋機制。
最開始:Java 定義了一套注解,共有 7 個,3 個在 java.lang 中,剩下 4 個在 java.lang.annotation 中。后來有慢慢加了很多。
常用的四個: @Override:標明此方法覆蓋了父類的方法 @Target :描述注解能夠作用的位置 ElementType取值: * TYPE:可以作用于類上 * METHOD:可以作用于方法上 * FIELD:可以作用于成員變量上 @Retention :描述注解被保留的階段 RetentionPolicy取值: * SOURCE:源文件有效 * Class:Class文件有效 * RUNTIME:運行時有效 @Documented: 描述注解是否被抽取到api文檔中
Spring的注解
用于創(chuàng)建對象的
@Component:把資源讓spring來管理。相當于xml中配置一個bean。 value:指定bean的id,如果不指定value屬性,默認bean的id是當前類的類名。首字母小寫 @Controller:與@Component功能一樣,一般用在表現層,便于分層 @Service:與@Component功能一樣,一般用在業(yè)務層,便于分層 @Repository:與@Component功能一樣,一般用于持久層,便于分層 @Bean:該注解只用用在方法上,表明使用此方法創(chuàng)建一個對象,并且放入spring容器中
用于注入數據的
@Autowired:自動按照類型注入。 使用要注入的對象變量名稱作為bean的id,在spring容器中查找,找到了注入成功,找不到就報錯。 默認按類型裝配 , 也可以使用名稱裝配,配合@Qualifier注解 @Qualifier:在自動按照類型注入的基礎上,再按照Bean的id注入。 @Resource:直接按照Bean的id注入。它也只能注入其他Bean類型。name屬性是指定Bean的id 默認按名稱進行裝配,通過name屬性進行指定 @Value:注入基本數據類型和String類型數據 @Value("${authUrl.productId}")-常用與注入配置文件中的數據
Spring5的新注解
@Configuration:用于指定當前類是一個spring配置類,當有容器時會從該類上加載注解。 @ComponentScan:用于指定spring在初始化容器時要掃描的包。 @Import:用于導入其他配置類,解耦合 @Scope("prototype"):指定Bean的作用范圍 ---singleton單例,prototype多例
SpringMVC的注解
@RequestParam:把請求中指定名稱的參數給控制器中的形參賦值 @GetMapping(value = "/queryReceivedNegotiation") public Wrapper queryReceivedNegotiation(@RequestParam String userId) ----示例 http://localhost:8012/upload/queryReceivedNegotiation?userId=3433434 @PathVariable:用于綁定URL中的占位符 @GetMapping(value = "/querySumBulletChat/{userId}") public Wrapper queryCommentReply( @PathVariable String userId) ----示例 http://localhost:8012/videoBulletchat/querySumBulletChat/3434 upload/queryReceivedNegotiation?userId=adfadfad videoBulletchat/querySumBulletChat/this.userid: # RequestParam只能用于接收請求帶的params # PathVariable用于接收url路徑上的參數 @RequestBody:用于獲取請求體內容 @RequestMapping:RequestMapping是一個用來處理請求地址映射的注解,可用于類或方法上。 作用與類上用@RequestMapping 作用與方法上可用@RequestMapping的變形 @GetMapping與@PostMapping @GetMapping是一個組合注解,是@RequestMapping(method = RequestMethod.GET)的縮寫。 @PostMapping是一個組合注解,是@RequestMapping(method = RequestMethod.POST)的縮寫。 @GetMapping:Get請求 @PostMapping:post請求 @PostMapping("insertPdfBehavior") public Wrapper insertUserBehavior(@RequestBody PdfBehaivorEntiry entiry)
Mybatis的注解
@Insert 增 @Insert("insert into t_md5(id,md5,path,create_time,update_time,creator,remark,is_delete) values (#{id},#{md5},#{path},#{createtime},#{updatetime},#{creator},#{remark},#{isdelete})") @Delete 刪 @Delete("DELETE FROM t_project WHERE project_name=#{projectName}") @Update 改 @Update("UPDATE t_project SET project_name =#{newName} where id =#{id}") @Select 查 @Select("select * from t_project where project_name=#{name}")
自定義注解--簡單例子
/** * @Author: Promsing(張有博) * @Date: 2021/8/21 - 17:09 * @Description: 自定義注解 * @version: 1.0 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { String getValue(); } public class HelloService { static Class
注解:
解開注解的神秘面紗
像是在一個廣場上(項目),給部分人打上一個標簽(注解),然后可以根據某種“機制”找到這些標簽,并給這些標簽賦值,修改。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。