spring 經常使用註解彙總

jar包:common-annotations.jar
命名空間:引入context 的 Schema命名空間 在配置文件中添加context:annotation-config標籤
配置掃描註解:<context:component-scan/>
掃描過濾方式java

過濾器類型 說明
註釋 假如 com.baobaotao.SomeAnnotation 是一個註釋類,咱們能夠將使用該註釋的類過濾出來。
類名指定 經過全限定類名進行過濾,如您能夠指定將 com.baobaotao.Boss 歸入掃描,而將 com.baobaotao.Car 排除在外。
正則表達式 經過正則表達式定義過濾的類,以下所示: com\.baobaotao\.Default.*
AspectJ 表達式 經過 AspectJ 表達式定義過濾的類,以下所示: com. baobaotao..*Service+

值得注意的是 <context:component-scan/> 配置項不但啓用了對類包進行掃描以實施註釋驅動 Bean 定義的功能,同時還啓用了註釋驅動自動注入的功能(即還隱式地在內部註冊了AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor),所以當使用 <context:component-scan/> 後,就能夠將 <context:annotation-config/> 移除了。web


<context:component-scan base-package="controller.*" />  <context:component-scan base-package="controller.**" />  **匹配任意class文件和包,而*只能匹配包,所以沒法掃描到包下的類,所以也就沒法被Spring管理。正則表達式


聲明bean的註解

@Controller用於標註控制層組件(如struts中的action) 默認的bean名字爲這個類的類名首字母小寫
@Service用於標註業務層組件,
@Repository用於標註數據訪問組件,即DAO組件,
@Component一個標準普通的spring Bean類,泛指組件,當組件很差歸類的時候,咱們可使用這個註解進行標註。主要用於工具類 不推薦spring

@RestController
Spring4以後加入的註解,原來在@Controller中返回json須要@ResponseBody來配合,若是直接用@RestController替代@Controller就不須要再配置@ResponseBody,默認返回json格式。編程

@RestController註解下返回到jsp視圖頁面json

@RequestMapping(value="/tologin", method=RequestMethod.GET)
    public ModelAndView login(){
        ModelAndView mv = new ModelAndView("index");
        return mv;
    }
注入bean的註解

@Autowired(Spring提供) 默認按類型裝配,若是咱們想使用按名稱裝配,能夠結合@Qualifier註解一塊兒使用
@Resource(JSR-250提供) 默認按名稱裝配,當找不到與名稱匹配的bean纔會按類型裝配。
@Inject(JSR-330提供) 根據類型進行自動裝配的,若是須要按名稱進行裝配,則須要配合 @Named
均可以註解在set方法和屬性上,推薦註解在屬性上(一目瞭然,少寫代碼)緩存

java配置類相關注解

@Configuration 聲明當前類爲配置類,至關於xml形式的Spring配置(類上)
@Bean 註解在方法上,聲明當前方法的返回值爲一個bean,替代xml中的方式(方法上)
@Configuration 聲明當前類爲配置類,其中內部組合了@Component註解,代表這個類是一個bean(類上)
@ComponentScan 用於對Component進行掃描,至關於xml中的(類上)
@WishlyConfiguration 爲@Configuration與@ComponentScan的組合註解,能夠替代這兩個註解cookie

切面(AOP)相關注解

Spring支持AspectJ的註解式切面編程。
@Aspect 聲明一個切面(類上) 
使用@After、@Before、@Around定義建言(advice),可直接將攔截規則(切點)做爲參數。session

@After 在方法執行以後執行(方法上) 
@Before 在方法執行以前執行(方法上) 
@Around 在方法執行以前與以後執行(方法上)app

@PointCut 聲明切點 
在java配置類中使用@EnableAspectJAutoProxy註解開啓Spring對AspectJ代理的支持(類上)

@Bean的屬性支持
  • @Scope用於指定scope做用域的(用在類上)
    其設置類型包括:
    • singleton (單例,一個Spring容器中只有一個bean實例, 默認模式

    • protetype (每次調用新建一個bean), 多實例模式 每次獲取Bean的時候會有一個新的實例

    • request (web項目中,給每一個http request新建一個bean), 

    • session (web項目中,給每一個http session新建一個bean), 表示在每個session中只有一個該對象

    • globalSession(給每個 global http session新建一個Bean實例)

    • 註解格式:@scope("prototype")

    • xml格式

<bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/>
或者
<bean id="role" class="spring.chapter2.maryGame.Role" singleton="true"/>

@PostConstruct 由JSR-250提供,在構造函數執行完以後執行,等價於xml配置文件中bean的initMethod
@PreDestory 由JSR-250提供,在Bean銷燬以前執行,等價於xml配置文件中bean的destroyMethod
@Lazy(true) 表示延遲初始化

@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("classpath:com/hgs/hello/test.txt")String Resource file;
注入網站資源:@Value("http://www.cznovel.com")Resource url;
注入配置文件:Value("${book.name}")String bookName;

注入配置使用方法:

① 編寫配置文件(test.properties): book.name=《三體》
② @PropertySource 加載配置文件(類上)
@PropertySource("classpath:com/hgs/hello/test/test.propertie")
③ 還需配置一個PropertySourcesPlaceholderConfigurer的bean

環境切換

@Profile 經過設定Environment的ActiveProfiles來設定當前context須要使用的配置環境。(類或方法上)
@Conditional Spring4中可使用此註解定義條件話的bean,經過實現Condition接口,並重寫matches方法,從而決定該bean是否被實例化。(方法上)

異步相關

@EnableAsync 配置類中,經過此註解開啓對異步任務的支持,敘事性AsyncConfigurer接口(類上)
@Async 在實際執行的bean方法使用該註解來申明其是一個異步任務(方法上或類上全部的方法都將異步,須要@EnableAsync開啓異步任務)

定時任務相關

@EnableScheduling 在配置類上使用,開啓計劃任務的支持(類上)
@Scheduled 來申明這是一個任務,包括cron,fixDelay,fixRate等類型(方法上,需先開啓計劃任務的支持)

@Enable*註解說明

這些註解主要用來開啓對xxx的支持。 
@EnableAspectJAutoProxy 開啓對AspectJ自動代理的支持
@EnableAsync 開啓異步方法的支持
@EnableScheduling 開啓計劃任務的支持
@EnableWebMvc 開啓Web MVC的配置支持
@EnableConfigurationProperties 開啓對@ConfigurationProperties註解配置Bean的支持
@EnableJpaRepositories 開啓對SpringData JPA Repository的支持
@EnableTransactionManagement 開啓註解式事務的支持
@EnableTransactionManagement 開啓註解式事務的支持
@EnableCaching 開啓註解式的緩存支持

測試相關注解

@RunWith 運行器,Spring中一般用於對JUnit的支持
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration 用來加載配置ApplicationContext,其中classes屬性用來加載配置類
@ContextConfiguration(classes={TestConfig.class})

事務管理

@Transactional( rollbackFor={Exception.class}) 事務管理

SpringMVC部分

@EnableWebMvc 在配置類中開啓Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若無此句,重寫WebMvcConfigurerAdapter方法(用於對SpringMVC的配置)。
@Controller 聲明該類爲SpringMVC中的Controller
@RequestMapping 用於映射Web請求,包括訪問路徑和參數(類或方法上)
@ResponseBody 支持將返回值放在response內,而不是一個頁面,一般用戶返回json數據(返回值旁或方法上)
@RequestBody 容許request的參數在request體中,而不是在直接鏈接在地址後面。(放在參數前)
@PathVariable 用於接收路徑參數,好比@RequestMapping(「/hello/{name}」)申明的路徑,將註解放在參數中前,便可獲取該值,一般做爲Restful的接口實現方法。
@RestController 該註解爲一個組合註解,至關於@Controller和@ResponseBody的組合,註解在類上,意味着,該Controller的全部方法都默認加上了@ResponseBody。
@ControllerAdvice 經過該註解,咱們能夠將對於控制器的全局配置放置在同一個位置,註解了 @Controller的類的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute註解到方法上, 
這對全部註解了 @RequestMapping的控制器內的方法有效。

@ExceptionHandler 用於全局處理控制器裏的異常
@InitBinder 用來設置WebDataBinder,WebDataBinder用來自動綁定前臺請求參數到Model中。
@ModelAttribute 原本的做用是綁定鍵值對到Model裏,在@ControllerAdvice中是讓全局的 @RequestMapping都能得到在此處設置的鍵值對。
主要有兩種使用方式,一種是標註在方法上,一種是標註在 Controller 方法參數上。
@CookieValue 綁定了cookie 的值到方法參數上
@SessionAttributes 傳遞和保存數據
@RequestHeader 註解綁定 HttpServletRequest 頭信息到 Controller 方法參數


@RequestParam 用於將請求參數區數據映射到功能處理方法的參數上

public Resp test(@RequestParam Integer id){
        return Resp.success(customerInfoService.fetch(id));
}

這個id就是要接收從接口傳遞過來的參數id的值的,若是接口傳遞過來的參數名和你接收的不一致,也能夠以下

public Resp test(@RequestParam(value="course_id") Integer id){
        return Resp.success(customerInfoService.fetch(id));
}

其中course_id就是接口傳遞的參數,id就是映射course_id的參數名


Spring 4.2新特性-使用@Order調整配置類加載順序

lombok 簡化java代碼註解  @Data   :註解在類上;提供類全部屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法 @Setter:註解在屬性上;爲屬性提供 setting 方法 @Getter:註解在屬性上;爲屬性提供 getting 方法 @Log4j :註解在類上;爲類提供一個 屬性名爲log 的 log4j 日誌對象 @NoArgsConstructor:註解在類上;爲類提供一個無參的構造方法   @AllArgsConstructor:註解在類上;爲類提供一個全參的構造方法

相關文章
相關標籤/搜索