天天看點

Java注解之簡介

1.概念

Java提供了一種源程式中的元素關聯任何資訊(屬性、方法和類)的途徑和方法。

2.使用注解的好處

  • 能夠讀懂别人的代碼,特别是架構相關的代碼
  • 讓程式設計更加簡潔,代碼更加清晰

3.常見注解

(1).JDK中自帶的注解

  • @Override:覆寫父類的方法
  • @Deprecated:不推薦使用該該方法,可以調用其它更好的方法,但仍然可以使用,調用不會報錯
  • @Suppreswarnings:告訴編譯器忽略指定的警告,不用在編譯完成後出現警告資訊
public interface Person {
    String name();

    String age();

    @Deprecated
    void sing();
}      
public class Baby implements Person {
   @Override
   public String name() {
       return null;
   }

   @Override
   public String age() {
       return null;
   }

   @Override
   public void sing() {

   }
}      
public class App {
   public static void main(String[] args) {
       Baby baby = new Baby();
       baby.sing();
   }
}      

(2).常見的第三方注解

  • @Autowired:自動進行依賴注入的注解
  • @Controller:控制器層注解
  • @Service:業務層注解
  • @Repository:持久層注解
  • @RequestMapping:處理請求的注解
@Controller
@EnableScheduling
@RequestMapping("/acceptanceNumber")
public class AcceptanceNumberController {
    @Autowired
    AcceptanceNumberImpl acceptanceNumberImpl;

    //藥品受理号定時任務
    @Scheduled(cron = "0 0 18 * * ?")
    public void getDrugAcceptanceNumberScheduled() {
        acceptanceNumberImpl.getDrugAcceptanceNumber();
    }

    @RequestMapping(value = "/getDrugAcceptanceNumber", method = RequestMethod.GET)
    public void getDrugAcceptanceNumber() {
        acceptanceNumberImpl.getDrugAcceptanceNumber();
    }
}      

4.注解的分類

(1).元注解

  • @Target:注解的使用範圍
  • @Retention:注解的生命周期
  • @Inherited:允許子類繼承,子類隻繼承類上的注解(辨別注解)
  • @Documented:生産javadoc時會包含的注解(辨別注解)

(2).按運作機制分

  • 源碼注解:隻在源碼中存在,編譯後就不存在了
  • 編譯時注解:存在于源碼和.class檔案中,如JDK自帶的注解
  • 運作時注解:在運作階段還會起作用的注解,能夠影響程式的運作邏輯
  • JDK自帶的注解
  • 第三方注解
  • 自定義注解