Java注解,又稱java標注,是jdk5.0引入的一種注釋機制,
java語言中的類、方法、變數、引數和包都可以被標注,Java 標注可以通過反射獲取標注內容,在編譯器生成類檔案時,標注可以被嵌入到位元組碼中,Java 虛擬機可以保留標注內容,在運行時可以獲取到標注內容 , 當然它也支持自定義 Java 標注
一.Spring部分常用注解
1.宣告bean的注解
@Component:泛指各種組件,沒有明確的角色
@Service 在業務邏輯層使用(service層)
@Repository 在資料訪問層使用(dao層)
@Controller在展現層使用,控制器的宣告(Controller)
@Override - 檢查該方法是否是重寫方法,如果發現其父類,或者是參考的介面中并沒有該方法時,會報編譯錯誤,
舉例:
package cn.tedu.ioc;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
@Component("a")//自動完成IOC,自己指定bean的名字a->{”a“,new User()}spring提供的,用來ioc
//@Component//默認的bean的名字,user
//@Component 自動完成IOC->{”user“,new User()}
//@Controller//spring提供的,用來ioc
//@Service//spring提供的,用來ioc
public class User {
public void get(){
System.out.println(123);
}
}
2.注入bean的注解
@Autowired:由Spring框架自帶的, 顧名思義自動裝配,Spring會自動將我們標記為@Autowired的元素裝配好,在bean中的屬性上通過@Autowired實作自定義bean型別的屬性注入,使用時對應的bean必須被spring管理,即手動配置了bean或者在類上添加了@Component注解,
package cn.tedu.di2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Student {
@Autowired//底層是反射,當于框架完成了:new Student().setTeacher(new Teacher());
Teacher t ;
String name = "蔡徐坤";
@Override
public String toString() {
return "Student{" +
"t=" + t +
", name='" + name + '\'' +
'}';
}
}
@Inject:由JSR-330提供,@Inject用法和@Autowired一樣,
@Resource:由JSR-250提供
@Autowired、@Inject是默認按照型別匹配的,@Resource是按照名稱匹配的,@Autowired如果需要按照名稱匹配需要和@Qualifier一起使用,@Inject和@Name一起使用,
@Primary:讓spring進行自動裝配的時候,默認使用首選的bean,和@Qualifier一個效果,
3.java配置類相關注解
@Configuration:宣告當前類為配置類,其中內部組合了@Component注解,相當于xml形式上的Spring配置,
4.切面AOP相關注解
@Aspect 宣告一個切面(類上)
@After 在方法執行之后執行,后置通知(方法上)
@Before 在方法執行之前執行,前置通知(方法上)
@Around 在方法執行之前與之后執行,環繞通知(方法上)
@PointCut 宣告切點
5.@Value注解:給屬性賦值,有以下幾種:
1.注入普通字符
@Value("Jason")
String name;
2.注入作業系統屬性
@Value("#{systemProperties['os.name']}")
String osName;
3.注入運算式結果
@Value("#{ T(java.lang.Math).random() * 100 }")
String randomNumber;
4.注入其它bean屬性
@Value("#{domeClass.name}")
String name;
5.注入檔案資源
@Value("classpath:com/hello/a.txt")
String Resource file;
6.注入網站資源
@Value("http://www.cznovel.com")
Resource url;
7.注入組態檔
@Value("${book.name}")
String bookName;
@Value三種情況的用法:
${}是去找外部配置的引數,將值賦過來
#{}是SpEL運算式,去尋找對應變數的內容
#{}直接寫字串就是將字串的值注入進去
6.@Bean的屬性支持
二.SpringMVC部分
@Controller:宣告該類為SpringMVC中的Controller
@RequestMapping:用于映射Web請求,包括訪問路徑和引數(類或方法上)
@ResponseBody:支持將回傳值放在response內,而不是一個頁面,通常用戶回傳json資料(回傳值旁或方法上)
@RequestBody:允許request的引數在request體中,而不是在直接連接在地址后面,(放在引數前)
@RestController:該注解為一個組合注解,相當于@Controller和@ResponseBody的組合,注解在類上,意味著,該Controller的所有方法都默認加上了@ResponseBody,
@CrossOrigin //放行JS的請求–跨域的解決方案
三.lombok注解
Data會自動生成set get toString equals hashCode
@NoArgsConstructor自動生成無參構造
@AllArgsConstructor自動生成全參構造
@Accessors(chain = true) //開啟鏈式編程
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295616.html
標籤:其他
上一篇:2021年大資料Kafka(八):Kafka如何保證資料不丟失
下一篇:基于SSM的寵物商城系統
