以前面試被問了不少註解問題。。因此如今來個積累。。html
@RestController:@ResponseBody+@Controller,把函數的返回值直接填入http響應體中,是REST風格的控制器。面試
@ResponseBody:表示該方法的返回結果直接寫入http response body中,用於構建RESTful的api。通常配合@RequestMapping一塊兒使用。spring
@RequestMapping:用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。數據庫
@RequestMapping("/test")
@ResponseBody
public String test() {
return "ok";
}複製代碼
@Controller:在Spring中由控制器負責將用戶發來的url請求轉發到對應的服務接口(Service),註解通常在類上,配合@RequestMapping使用。api
@Controller
public class LoginController {
@RequestMapping(value="/login", method="RequestMethod.POST")
public String login() {
return "login successfully";
}
}複製代碼
@SpringBootApplication:@ComponentScan、@Configuration和@EnableAutoConfiguration註解。springboot
//啓動Spring Boot項目
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}複製代碼
@ComponentScan:自動掃描當前包及子包下全部類,找到標識了須要裝配的類自動裝配到spring的bean容器中。bash
@Configuration:表示該類做用springboot配置文件類。app
@EnableAutoConfiguration:表示程序啓動時,自動加載springboot默認的配置。框架
@Autowired:自動導入依賴的bean。函數
@PathVariable:獲取參數。
@Entity:@Table(name=""):代表這是一個實體類。通常這兩個註解一塊兒使用,可是若是表名和實體類名相同,@Table能夠省略。
@Column:若是字段名與列名相同,可省略。
@Id:表示該屬性爲主鍵。
@Transient:表示該屬性並不是一個到數據庫表的字段的映射,ORM框架將忽略該屬性。
@JoinColumn(name="userId"):一對一:本表中指向另外一個表的外鍵。一對多:另外一個表指向本表的外鍵。
@OneToOne、@OneToMany、@ManyToOne:對應hibernate配置文件中的一對一,一對多,多對一。
通常狀況下,Spring容器在啓動時會建立全部的bean對象,使用@Lazy註解能夠將bean對象的建立延遲到第一次使用bean的時候。
@Component
@Lazy
public class test {
public test() {
System.out.println("Lazy");
}
public void sayLazy() {
System.out.println("I am Lazy");
}
}複製代碼
參考資料: