Java開發Spring常見註解

Java開發Spring常見註解

   前言

   Spring的一個核心功能是IOC,就是將Bean初始化加載到容器中,Bean是如何加載到容器的,可以使用Spring註解方式或者Spring XML配置方式。

   註解本身沒有功能的,就和 xml 一樣。註解和 xml 都是一種元數據,元數據即解釋數據的數據,這就是所謂配置。

   Spring註解方式減少了配置文件內容,更加便於管理,並且使用註解可以大大提高了開發效率。 下面按照分類講解Spring中常用的一些註解。

   Spring部分

   一、聲明bean的註解

   1. @Component
   表示一個帶註釋的類是一個“組件”,成爲Spring管理的Bean。當使用基於註解的配置和類路徑掃描時,這些類被視爲自動檢測的候選對象。同時@Component還是一個元註解

   2. @Service
  組合註解(組合了@Component註解),應用在service層(業務邏輯層)

1 @Slf4j
2 @Service
3 @RequiredArgsConstructor(onConstructor_ = {@Autowired})
4 public class TppAgencyHttpProxyServiceImpl implements TppAgencyHttpProxyService {
5 }

  3. @Repository
  組合註解(組合了@Component註解),應用在dao層(數據訪問層)。

1 @Repository
2 public interface InsuranceAgreementMapper extends MPJBaseMapper<InsuranceAgreementDO> {
3 
7 }

4. @Controller
組合註解(組合了@Component註解),應用在MVC層(控制層),DispatcherServlet會自動掃描註解了此註解的類,然後將web請求映射到註解了@RequestMapping的方法上

二、注入bean的註解

1. @Autowired
由 Spring 框架提供,是 Spring 的核心註解之一,用於實現依賴注入,支持按類型注入,也可以通過 @Qualifier 註解實現按名稱注入。其典型使用場景是:
@Autowired
private MyService myService;


默認是按照類型裝配注入的,如果想按照名稱來裝配注入,則需要結合@Qualifier一起使用由Spring提供

Spring提供的工具(由Spring的依賴注入工具(BeanPostProcessor、BeanFactoryPostProcessor)自動注入)

2. @Inject
由JSR-330提供

3. @Resource

由 JSR-250 規範提供,是一種標準的 Java 註解,廣泛應用於各種 Java EE 規範中。它用於將資源注入到應用程序中,支持按名稱或類型注入。其典型使用場景是:


@Resource
private MyService myService;

 

@Resource和@Autowired的區別

說明:@Resource默認是按照名稱來裝配注入的,只有當找不到與名稱匹配的bean纔會按照類型來裝配注入

1)@Resource是由J2EE(JSR-250)提供,而@Autowired是由spring提供,故減少系統對spring的依賴建議使用
2)@Resource和@Autowired都可以書寫標註在字段或者該字段的setter方法之上

 


三、配置類相關注解

1. @Configuration
聲明當前類爲配置類,相當於xml形式的Spring配置

2. @Bean 註解在方法上,聲明當前方法的返回值爲一個bean,替代xml中的方式


3. @ComponentScan 用於對Component進行掃描,相當於xml中的:
<context:component-scan base-package="com.yp"></context:component-scan>

比如:指定了spring掃描的包路徑爲:com.eugene.sumarry.aop.csdn,這將說明在此包下的所有spring識別的註解都會被解析


四、切面(AOP)相關注解

1. @Aspect
聲明一個切面(類上) 使用@After、@Before、@Around定義建言(advice),可直接將攔截規則(切點)作爲參數。
@After :在方法執行之後執行(方法上)。
@Before: 在方法執行之前執行(方法上)。
@Around: 在方法執行之前與之後執行(方法上)。
@AfterReturning
@AfterThrowing


2. @PointCut
聲明切點

3. @EnableAspectJAutoProxy
在java配置類中使用@EnableAspectJAutoProxy註解,開啓Spring對AspectJ代理的支持(類上)。其中,proxyTargetClass屬性指定了aop使用哪種代理方式來增強目標類

五、SpringMVC部分

1. @EnableWebMvc
在配置類中開啓Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若無此句,重寫WebMvcConfigurerAdapter方法(用於對SpringMVC的配置)。

2. @Controller
聲明該類爲SpringMVC中的Controller

3. @RequestMapping
用於映射Web請求,包括訪問路徑和參數(類或方法上)

4. @ResponseBody
支持將返回值放在response內,而不是一個頁面,通常用戶返回json數據(返回值旁或方法上)

5. @RequestBody
允許request的參數在request體中,而不是在直接連接在地址後面。(放在參數前)

6. @PathVariable
用於接收路徑參數,比如@RequestMapping(“/hello/{name}”)申明的路徑,將註解放在參數中前,即可獲取該值,通常作爲Restful的接口實現方法。
6. @RestController
該註解爲一個組合註解,相當於@Controller和@ResponseBody的組合,註解在類上,意味着,該Controller的所有方法都默認加上了@ResponseBody。
7. @ExceptionHandler
用於全局處理控制器裏的異常。

 


六、@Enable*註解說明

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

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