Spring常用註解

1、聲明bean的註解
   @Component:組件,沒有明確的角色
   @Service:在業務邏輯層使用(service層)
   @Repository:在數據訪問層使用(dao層)
   @Controller:在展現層使用,控制器的聲明(C)
2、注入bean的註解
   @Autowired:由Spring提供
   @Inject:由JSR-330提供
   @Resource:由JSR-250提供
        都可以註解在set方法和屬性上,推薦註解在屬性上(一目瞭然,少寫代碼)
3、java配置類相關注解
   @Configuration:聲明當前類爲配置類,相當於xml形式的Spring配置(類上),其中內部組合了@Component註解,表明這個類是一個bean
   @Bean:註解在方法上,聲明當前方法的返回值爲一個bean,替代xml中的方式(方法上)
   @ComponentScan:用於對component進行掃描
   @WishlyConfiguration:爲@Configuration與@ComponentScan的組合註解,可以替代這兩個註解
4、切面(AOP)相關注解
   Spring支持AspectJ的註解式切面編程
   @AspectJ:聲明一個切面(類上)
   使用@After、@Before、@Around定義建言(advice),可直接將攔截規則(切點)作爲參數
   @After:在方法執行之後執行(方法上)
   @Before:在方法執行之前執行(方法上)
   @Around:在方法執行之前和之後執行(方法上)
   @PointCut:聲明切點
    在java配置類中使用@EnableAspectJAutoProxy註解開啓Spring對AspectJ代理的支持(類上)
5、@Bean的屬性支持
   @Scope:設置Spring容器如何新建Bean實例(方法上得有@Bean)
        其設置類型包括:
        ——Singleton(單例,一個Spring容器中只有一個bean實例,默認模式)
        ——Protetype(每次調用新建一個bean)
        ——Request(web項目中,給每個http request新建一個bean)
        ——Session(web項目中,給每個http session新建一個bean)
        ——GlobalSession(給每一個global http session新建一個bean實例)
   @StepScope:在Sping Batch中才有涉及

Spring batch是用來處理大量數據操作的一個框架,主要用來讀取大量數據,然後進行一定處理後輸出成指定的形式。
  Spring batch主要有以下部分組成:
JobRepository      用來註冊job的容器
JobLauncher            用來啓動Job的接口
Job                          實際執行的任務,包含一個或多個Step
Step                         step包含ItemReader、ItemProcessor和ItemWriter
ItemReader              用來讀取數據的接口
ItemProcessor          用來處理數據的接口
ItemWriter               用來輸出數據的接口
以上Spring Batch的主要組成部分只需要註冊成Spring的Bean即可。若想開啓批處理的支持還需在配置類上使用@EnableBatchProcessing,在Spring Batch中提供了大量的ItemReader和ItemWriter的實現,用來讀取不同的數據來源,數據的處理和校驗都要通過ItemProcessor接口實現來完成。
Spring Boot的支持
  Spring Boot對Spring Batch支持的源碼位於org.springframework.boot.autoconfigure.batch下。
  Spring Boot爲我們自動初始化了Spring Batch存儲批處理記錄的數據庫。
  spring batch會自動加載hsqldb驅動,根據需求選擇去留。
摘抄自Spring batch的學習:https://www.cnblogs.com/kevin443/p/6753703.html

   @PostConstruct:由JSR-250提供,在構造函數執行完之後執行,等價於xml配置文件中bean 的initMethod
   @PreDestory:由JSR-250提供,在bean銷燬之前執行,等價於xml配置文件中bean的destroyMethod
6、@Value註解

@Value爲屬性注入值(屬性上),支持如下方式的注入:

注入普通的字符

    @Value("Michael Jackson") 

    String name;

注入操作系統屬性  @Value("#{systemProperties['os.name']}")
  String osName;
注入表達式結果  @Value("#{T(java.lang.Math).random()*100}")
  String randomNumber;
注入其他bean的屬性 @Value("#{domeClass.name}")
  String name;
注入文件資源 @Value("calsspath:com/hgs/hello/test.txt")
  Resource file;
注入網站資源 @Value("http://www.javastack.cn")
  Resource url;
注入配置文件屬性  @Value("${book.name}")
  String bookName;

    注入配置使用方法:
        ①編寫配置文件test.properties:book.name=《三體》
        ②@PropertySource加載配置文件(類上):@PropertySource("classpath:com/hgs/hello/test/test.properties")
        ③還需要配置一個PropertySourcesPlaceholderConfigurer的bean
7、環境切換
        @Profile:通過設置Environment的ActiveProfiles來設定當前context需要使用的配置環境
        @Conditional:Spring4中可以使用此註解定義條件化的bean,通過實現Condition接口,並重寫matches方法,從而決定該bean是否被實例化(方法上)
8、異步相關
   @EnableAsync:配置類中,通過此註解開啓對異步任務的支持,敘事性AsyncConfigurer接口(類上)
   @Async:在實際執行的bean方法使用該註解來聲明其是一個異步任務(方法上或類上所有的方法都將異步,需要@EnableAsync開啓異步任務)
9、定時任務相關
   @EnableScheduling:在配置類上使用,開啓計劃任務的支持(類上)
   @Scheduled:來申明這是一個任務,包括cron、fixDelay、fixRate等類型(方法上,需要開啓計劃任務的支持)
10、@Enable*註解說明
   這些註解主要用來開啓對xxx的支持
   @EnableAspectJAutoProxy:開啓對AspectJ自動代理的支持
   @EnableAsync:開啓異步方法的支持
   @EnableScheduling:開啓計劃任務的支持
   @EnableWebMvc:開啓Web MVC的配置支持
   @EnableConfigurationProperties:開啓對@ConfigurationProperties註解配置Bean的支持
   @EnableJpaRepositories:開啓對SpringData JPA Repository的支持
   @EnableTransactionManagement:開啓註解式事務的支持
   @EnableCaching:開啓註解式的緩存支持
11、測試相關注解
   @RunWith:運行器,Spring中通常用於對JUint的支持
      @RunWith(SpringJUint4ClassRunner.class)
   @ContextConfiguration:用來加載配置ApplicationContext,其中classes屬性用來加載配置類
      @ContextConfiguration(calsses={TestConfig.class})
12、SpringMVC相關注解
   @EnableWebMvc:在配置類中開啓WebMVC的配置支持,如一些ViewResolver或者MessageConverter等,若無此句,重寫WebMvcConfigurerAdapter方法(用於對SpringMVC的配置)
   @Controller:聲明該類爲SpringMVC中的Controller
   @ResquestMapping:用於映射Web請求,包括訪問路徑和參數(類和方法上)
   @ResponseBody:支持將返回值放在response內,而不是一個頁面,通常用於返回json數據(返回值旁或方法上)
   @PathVariable:用於接收路徑參數,比如@RequestMapping("/hello/{name}")聲明的路徑,將註解放在參數前,即可獲取該值,通常作爲Restful接口實現方法
   @RestController:該註解爲一個組合註解,相當於@Controller和@ResponseBody的組合,註解在類上,意味着,該Controller的所有方法都默認加上了@ResponseBody
   @CoontrollerAdvice:通過該註解,我們可以將對於控制器的全局配置放置在同一個位置,註解了@Controller的類的方法可以使用@ExceptionHanler、@InitBinder、@ModelAttribute註解到方法上,這對所有註解了@ResquestMapping的控制器內的方法有效。
     @ExceptionHandler:用於全局處理控制器裏的異常
     @InitBinder:用來設置WebDataBinder,WebDataBinder用來自動綁定前臺請求參數到Model中。
     @ModelAttribute:本來的作用是綁定鍵值對到Model裏,在@ControllerAdvice中是讓全局的@RequestMapping都能獲取在此處設置的鍵值對。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章