導航:首頁 > 文件教程 > spring註解教程

spring註解教程

發布時間:2023-05-18 12:47:38

1. Spring 常用註解大全

@Controller:組合註解(組合了@Component註解),應用在Controller層(控制層)。

@Service:組合註解(組合了@Component註解),應用在Service層(業務邏輯層)。

@Reponsitory:組合註解(組合了@Component註解),應用在Dao層(數據訪問層)。

@Component:表示類是一個「組件」,成為Spring管理的Bean。同時@Component還是一個元註解。

@Autowired:Spring提供的工具(由Spring的依賴注入工具BeanPostProcessor或BeanFactoryPostProcessor自動注入)。

@Resource:JSR-250提供的註解。

@Inject:JSR-330提供的註解。

@Configuration:聲明當前類是一個配置類(相當於一個Spring配置文件)。

@ComponentScan:自動掃描指定包下所有使用@Service,@Component,@Controller,@Repository的類並注冊。

@Bean:註解在方法上,聲明當前方法的返回值為一個Bean。返回的Bean對應的類中可以定義init()方法和destroy()方法,然後在@Bean(initMethod=」init」, destroyMethod=」destroy」)定義,在構造之後執行init,在銷毀之前執行destroy。

@Aspect:聲明一個切面。

@After:後置建言(advice),在原方法前執行。

@Before:前置建言(advice),在原方法後執行。

@Around:環繞建言(advice),在原方法執行前執行,在原方法執行後再執行。

@PointCut:聲明切點,即定義攔截規則,確定有哪些方法會被切入。

@Transactional:聲明事務(一般默認配置即可滿足要求,當然也可以自定義)。

@Cacheable:聲明數據緩存。

@EnableAspectJAutoProxy:開啟Spring對AspectJ的支持。

@Value:值得注入。經常與Sping EL表達式語言一起使用,注入普通字元,系統屬性,表達式運算結果,其他Bean的屬性,文件內容,網址請求內容,配置文件屬性值等。

@PropertySource:指定文件地址。提供了一種方便的、聲明性的機制,用於向Spring的環境添加PropertySource。與@Configuration類一起使用。

@PostConstruct:標注在方法上,該方法在構造函數執行完成之後執行。

@PreDestroy:標注在方法上,該方法在對象銷毀之前執行。

@Profile:表示當一個或多個指定的文件是活動的時,一個組件是有資格注冊的。使用@Profile註解類或者方法,達到在不同情況下選擇實例化不同的Bean。@Profile(「dev」)表示為dev時實例化。

@EnableAsync:開啟非同步任務支持。註解在配置類上。

@Async:註解在方法上表示這是一個非同步方法,在類上表示這個類所有的方法都是非同步方法。

@EnableScheling:註解在配置類上,開啟對計劃任務的支持。

@Scheled:註解在方法上,聲明該方法是計劃任務。支持多種類型的計劃任務:cron,fixDelay,fixRate。

@Conditional:根據滿足某一特定條件創建特定的Bean。

@Enable*:通過簡單的@Enable*來開啟一項功能的支持。所有@Enable*註解都有一個@Import註解,@Import是用來導入配置類的,這也就意味著這些自動開啟的實現其實是導入了一些自動配置的Bean。

@RunWith:這個是Junit的註解,SpringBoot集成了junit。一般在測試類里使用:@RunWith(SpringJUnit4ClassRunner.class) — SpringJUnit4ClassRunner在JUnit環境下提供Sprng TestContext Framework的功能

@ContextConfiguration:用來載入配置ApplicationContext,其中classes屬性用來載入配置類:@ContextConfiguration(classes = {TestConfig.class(自定義的一個配置類)})

@ActiveProfiles:用來聲明活動的profile–@ActiveProfiles(「prod」(這個prod定義在配置類中))

@EnableWebMvc:用在配置類上,開啟SpringMvc的Mvc的一些默認配置:如ViewResolver,MessageConverter等。同時在自己定製SpringMvc的相關配置時需要做到兩點:1:配置類繼承WebMvcConfigurerAdapter類,2:就是必須使用這個@EnableWebMvc註解。

@RequestMapping:用來映射web請求(訪問路徑和參數),處理類和方法的。可以註解在類和方法上,註解在方法上的@RequestMapping路徑會繼承註解在類上的路徑。同時支持Serlvet的request和response作為參數,也支持對request和response的媒體類型進行配置。其中有value(路徑),proces(定義返回的媒體類型和字元集),method(指定請求方式)等屬性。

@ResponseBody:將返回值放在response體內。返回的是數據而不是頁面

@RequestBody:允許request的參數在request體中,而不是在直接鏈接在地址的後面。此註解放置在參數前。

@PathVariable:放置在參數前,用來接受路徑參數。

@RestController:組合註解,組合了@Controller和@ResponseBody,當我們只開發一個和頁面交互數據的控制層的時候可以使用此註解。

@ControllerAdvice:用在類上,聲明一個控制器建言,它也組合了@Component註解,會自動注冊為Spring的Bean。

@ExceptionHandler:用在方法上定義全局處理,通過他的value屬性可以過濾攔截的條件:@ExceptionHandler(value=Exception.class)–表示攔截所有的Exception。

@ModelAttribute:將鍵值對添加到全局,所有註解了@RequestMapping的方法可獲得次鍵值對(就是在請求到達之前,往model里addAttribute一對name-value而已)。

@InitBinder:通過@InitBinder註解定製WebDataBinder(用在方法上,方法有一個WebDataBinder作為參數,用WebDataBinder在方法內定製數據綁定,例如可以忽略request傳過來的參數Id等)。

@WebAppConfiguration:一般用在測試上,註解在類上,用來聲明載入的ApplicationContext是一個WebApplicationContext。他的屬性指定的是Web資源的位置,默認為src/main/webapp,我們可以修改為:@WebAppConfiguration(「src/main/resources」)。

@EnableAutoConfiguration:此注釋自動載入應用程序所需的所有Bean——這依賴於Spring Boot在類路徑中的查找。該註解組合了@Import註解,@Import註解導入了類,它使用SpringFactoriesLoader.loaderFactoryNames方法來掃描具有META-INF/spring.factories文件的jar包。而spring.factories里聲明了有哪些自動配置。

@SpingBootApplication:SpringBoot的核心註解,主要目的是開啟自動配置。它也是一個組合註解,主要組合了@Configurer,@EnableAutoConfiguration(核心)和@ComponentScan。可以通過@SpringBootApplication(exclude={想要關閉的自動配置的類名.class})來關閉特定的自動配置。

@ImportResource:雖然Spring提倡零配置,但是還是提供了對xml文件的支持,這個註解就是用來載入xml配置的。例:@ImportResource({「classpath

@ConfigurationProperties:將properties屬性與一個Bean及其屬性相關聯,從而實現類型安全的配置。例:@ConfigurationProperties(prefix=」authot」, locations={「classpath

@ConditionalOnBean:條件註解。當容器里有指定Bean的條件下。

@ConditionalOnClass:條件註解。當類路徑下有指定的類的條件下。

@ConditionalOnExpression:條件註解。基於SpEL表達式作為判斷條件。

@ConditionalOnjava:條件註解。基於JVM版本作為判斷條件。

@ConditionalOnJndi:條件註解。在JNDI存在的條件下查找指定的位置。

@ConditionalOnMissingBean:條件註解。當容器里沒有指定Bean的情況下。

@ConditionalOnMissingClass:條件註解。當類路徑下沒有指定的類的情況下。

@:條件註解。當前項目不是web項目的條件下。

@ConditionalOnResource:條件註解。類路徑是否有指定的值。

@ConditionalOnSingleCandidate:條件註解。當指定Bean在容器中只有一個,後者雖然有多個但是指定首選的Bean。

@ConditionalOnWebApplication:條件註解。當前項目是web項目的情況下。

@EnableConfigurationProperties:註解在類上,聲明開啟屬性注入,使用@Autowired注入。例:@EnableConfigurationProperties(HttpEncodingProperties.class)。

@AutoConfigureAfter:在指定的自動配置類之後再配置。例:@AutoConfigureAfter(WebMvcAutoConfiguration.class)。

轉自:https://www.cnblogs.com/alter888/p/9083963.html

2. Spring註解

     @Component(當一個類無法確定分類,但需要存入ioc容器可以使用這個註解)

        @ Controller(表現層) 、@ Service(業務層) 、@ Repository(持久層)。

             作用:用於把當前類對象存入spring容器中

            屬性: value :用於指定bean的id。當我們不寫時,它的默認值是當前類名,且首字母改小寫。

    @ Autowire:自動按類型注入。彎早 出現位置:可以在變數上、也可以是方法上。

         細節:在使用註解注入時,set方法就不是必須的了

    @ Qualifier:按照類中注入的基礎之上再按照名稱注入。

    @ Resource : 直接按照bean的id注入。它可以獨立使用

    @ Value:用於注入基本類型和String類型的數據

   ( 作用就和在bean標簽中使用scope屬性實現的功能是一樣的 )

    @ Scope: 常用取值: singleton 、prototype

    ( 作用就和在bean標簽中使用init-method和destroy-method的作用是一樣的 )

     @ PostConstruct:用於指定初始化方法。 在類中方法上指定

    @ PreDestroy:用於指定銷毀方法。 在類裂液中方法埋源雀上指定(最好是單例對象,因為多例對象有java回收垃圾機制回收)

    @ Configuration: 指定當前類是一個配置類

    @ ComponentScan: 指定創建容器時要掃描的包。和本文開頭加入的內容作用是一致的

    @ PropertySource ("classpath:jdbc.properties"):載入配置文件

    @ Import: 用於引入其他的類,將其他配置類導入總配置類

3. spring註解怎麼使用

spring註解鎮滑

1.准備工作
(1)導入common-annotations.jar
(2)導入schema文件 文件名為spring-context-2.5.xsd
(3)在搜旅者xml的beans節點中配世薯置

2.xml配置工作

4. java開發中spring註解的使用方法

註解方式李態配置(簡化XML配置文件)
組件自動掃描功能
首先需要在applicationContext.xml中添加<context:component-scan/>
a.掃描Bean組件的註解,替代xml中的<bean>元素的定義。
@Service 用於Service業務組件
@Control 用於Action控制組件
@Respository 用於DAO數據訪問組哪源源件
@Component 用於其他組件
Bean組件掃描到容器後,裂羨默認名字為類名(首字母小寫)
如果需要自定義名稱可以使用@Service("id名")
b.依賴注入的註解標記
@Resource 按名稱@Resource(name="id名")
@AutoWired 按名稱
@Autowired
@Qualifier("id名")
c.其他註解
@Scope 等價於<bean scope="">
@PostConstruct 等價於<bean init-method="">
@PreDestroy 等價於<bean destroy-method="">

5. spring常用註解

一、組件註解

1、 @Component(「xxx」)

指定某個類是容器的bean, @Component(value="xx") 相當於 ,其中 value 可以不寫。

用於標注類為spring容器bean的註解有四個, 主要用於區別不同的組件類,提高代碼的可讀性:

a、 @Component, 用於標注一個普通的bean

b、 @Controller 用於標注一個控制器類(控制層 controller)

c、 @Service 用於標注業務邏輯類(業務邏輯層 service)

d、 @Repository 用於標注DAO數據訪問類 (數據訪問層 )

對於上面四種註解的解析可能是相同的,盡量使用不同的註解提高代碼可讀性。

註解用於修飾類,當不寫value屬性值時,默認值為類名首字母小寫。

2、 @Scope(「prototype」)

該註解和 @Component 這一類註解聯合使用,用於標記該類的作用域,默認 singleton 。
也可以和 @Bean 一起使用,此時 @Scope 修飾一個方法。關於@Bean稍後有說明

3、 @Lazy(true)

指定bean是否延時初始化,相當於 ,默認false。@Lazy可以和@Component這一類註解聯合使用修飾類,也可以和@Bean一起使用修飾方法

注 :此處初始化不是指不執行 init-method ,而是不創建bean實例和依賴注入。只有當該bean(被@Lazy修飾的類或方法)被其他bean引用(可以是自動注入的方式)或者執行getBean方法獲取,才會真正的創建該bean實例,其實這也是BeanFactory的執行方式。

4、 @DepondsOn({「aa」,「bb」})

該註解也是配合 @Component 這類註解使用,用於強制初始化其他bean

上面的代碼指定,初始化bean 「userAction"之前需要先初始化「aa」和「bb」兩個bean,但是使用了@Lazy(true)所以spring容器初始化時不會初始化"userAction」 bean。

5、 @PostConstructor和@PreDestroy

@PostConstructor 和 @PreDestroy 這兩個註解是j2ee規范下的註解。這兩個註解用於修飾方法,spring用這兩個註解管理容器中spring生命周期行為。

a、 @PostConstructor 從名字可以看出構造器之後調用,相當於 。就是在依賴注入之後執行

b、 @PreDestroy 容器銷毀之前bean調用的方法,相當於

6、 @Resource(name=「xx」)

@Resource 可以修飾成員變數也可以修飾set方法。當修飾成員變數時可以不寫set方法,此時spring會直接使用j2ee規范的Field注入。

@Resource有兩個比較重要的屬性,name和type

a、 如果指定了name和type,則從Spring容器中找到唯一匹配的bean進行裝配,找不到則拋出異常;

b、 如果指定了name,則從spring容器查找名稱(id)匹配的bean進行裝配,找不到則拋出異常;

c、 如果指定了type,則從spring容器中找到類型匹配的唯一bean進行裝配,找不到或者找到多個,都會拋出異常;

d、 如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配

如果沒有寫name屬性值時

a、 修飾成員變數,此時name為成員變數名稱

b、 修飾set方法,此時name 為set方法的去掉set後首字母小寫得到的字元串

7、 @Autowired(required=false)

@Autowired可以修飾構造器,成員變數,set方法,普通方法。@Autowired默認使用byType方式自動裝配。required標記該類型的bean是否是必須的,默認為必須存在(true)。

可以配合 @Qualifier(value="xx") ,實現按beanName注入:

a、 required=true(默認),為true時,從spring容器查找和指定類型匹配的bean,匹配不到或匹配多個則拋出異常

b、 使用 @Qualifier("xx") ,則會從spring容器匹配類型和 id 一致的bean,匹配不到則拋出異常

@Autowired會根據修飾的成員選取不同的類型:

a、 修飾成員變數。該類型為成員變數類型

b、 修飾方法,構造器。注入類型為參數的數據類型,當然可以有多個參數

8、demo

業務邏輯層:

數據訪問層:

測試類:

輸出結果:

可以看到雖然UserDao 使用@Lazy,但是還是在spring容器初始化的時候還是創建了UserDao實例。原因很簡單,因為在UserService中需要注入UserDao,所以在此時創建的UserDao實例也屬於延時初始化。

在上面我們還使用了兩個介面InitializingBean 和DisposableBean,這兩個介面用於管理 singleton 作用域的bean的生命周期,類似init-method和destroy-method。不同之處就是調用的循序不一致:

a、 初始化調用順序 :@PostConstructor > InitializingBean > init-method 用於指定bean依賴注入後的行為

b、 銷毀調用順序 @PreDestroy > DisposableBean > destroy-method 用於定製bean銷毀之前的行為

該註解是AspectJ中的註解,並不是spring提供的,所以還需要導入aspectjweaver.jar,aspectjrt.jar,除此之外還需要依賴aopalliance.jar

依賴包:

UserDao.java

配置文件 applicationContext.xml:

測試類:

1、 @Aspect

修飾Java類,指定該類為切面類。當spring容器檢測到某個bean被@Aspect修飾時,spring容器不會對該bean做增強處理(bean後處理器增強,代理增強)

2、 @Before

修飾方法,before增強處理。用於對目標方法(切入點表達式表示方法)執行前做增強處理。可以用於許可權檢查,登陸檢查。

常用屬性:

value: 指定切入點表達式 或者引用一個切入點

對com.example.aop 包下所有的類的所有方法做 before增強處理:

結果:

如果同一條切入點表達式被使用多次,可以使用更友好的方式。定義一個切入點:

增強方法可以接受一個JoinPoint 類型的參數,用於獲取被執行目標方法的一下屬性。

結果:

3、 @AfterReturning

修飾方法,afterreturning增強處理。目標方法正常結束後做增強處理。

常用屬性:

a、 pointcut/value:指定切入點表達式

b、 returning:指定一個參數名,用於接受目標方法正常結束時返回的值。參數名稱需要在增強方法中定義同名的參數。

注意:

a、 如果使用了returning 。那麼增強方法中的數據類型必須是返回結果的類型或者父類型,否則不會調用該增強處理。

b、 使用了returning 還可以用來 修改返回結果 。

以上面的例子來說,目標方法返回結果類型應該滿足下面的條件

修改返回值:

結果:

可以看到 AfterReturning 修改了返回結果。

4、 @AfterThrowing

修飾方法,afterthrowing增強處理。當目標程序方法拋出 異常或者異常無法捕獲時,做增強處理。

常用屬性:

a、 pointcut/value :指定切入點表達式

b、 throwing:指定一個形參,在增強方法中定義同名形參,用於訪問目標方法拋出的異常

參數類型必須是 Throwable 的子類,同樣也會有上面@AfterReturning 參數類型匹配的問題。

5、 @After

修飾方法 ,after增強處理。無論方法是否正常結束,都會調用該增強處理(@After= @AfterReturning+@AfterThrowing)。但是該增強方式無法獲取目標方法的返回結果,也獲取目標方法拋出的異常。所以一般用於進行釋放資源,功能類似於 finally。

常用屬性:

a、 value :指定切入點表達式

結果:

從上面的結果來看 After 增加處理 ,因為不能接受返回結果作為參數,所以不能修改返回結果。

6、 @Around

修飾方法, around增強處理。該處理可以目標方法執行之前和執行之後織入增強處理(@Before+@AfterReturning)。

Around增強處理通常需要在線程安全的環境下使用,如果@Before和@AfterReturning可以處理就沒必要使用@Around。

常用屬性:

a、 value :指定切入點表達式

當定義一個Aound增前處理時,增強方法第一形參需要時ProceedingJoinPoint類型。ProceedingJoinPoint有一個Object proceed()方法,用於執行目標方法。當然也可以為目標方法傳遞數組參數,來修改目前方法的傳入參數。

around小結:

a、 Around增強處理通常需要 在線程安全 的環境下使用

b、 調用 proceed()可以獲取返回結果,所以可以修改目標方法的返回值

c、 proceed(Object[] var1) 可以修改入參,修改目標方法的入參

d、 可以進行目標方法執行之前和執行之後織入增強處理

around 和 afterReturning 都可以修改返回結果。不過兩者的原理不同:

a、 around:可以任意修改,或者返回不相關的值。這個返回值完全可以自主控制

b、 afterReturning,通過方法參數 ,使用對象引用的方式來修改對象。修改對象引用地址那麼修改時無效的

除此之外從輸出結果來看,增強處理是有序的:

around 和 afterReturning小結:

a、 只有 around 和 afterReturning 可以獲取並修改返回結果。需要注意兩種方式修改的區別。

b、 around 需要線程安全

c、 雖然增強處理都需要 切入點表達式,並不是都支持 pointcut 屬性,所以最好都是用value 屬性指定。當註解只需要value屬性時,value可以省略

7、 @Pointcut

修飾方法,定義一個切入點表達式用於被其他增強調用。使用該方式定義切入點方便管理,易復用。

切入點方法定義和測試方法定義類似,具有以下特點:

a、 無返回值 (void)

b、 無參數

c、 方法體為空

d、 方法名就是切入點名稱

e、 方法名不能為 execution

切入點表達式

切入點表達式可以通過 && 、 || 、 ! 連接

1)、execution 表達式:

2)、within 表達式:

a、匹配指定類下的所有方法。

b、匹配執行包及其子包下所有類的所有方法。

所以within可以看做execution的簡寫,不需要指定返回類型、方法名、參數( 最小作用單位是類 )

3)、 @annotation:匹配使用指定註解修飾的目標方法;

匹配使用@CustomMethodAnnotation註解的目標方法。

4)、 @within: 用於匹配使用指定註解修飾的類下的所有方法

within 作用范圍是類,@within的作用范圍與其一致。不同的是@within 指定的不是類而是註解

匹配使用@ResponseBody 註解的類 下的所有方法。

AOP小結:

1)、 Around增強處理通常需要 在線程安全 的環境下使用

2)、 使用 around 和 afterReturning 可以獲取並修改返回結果

3)、 增強處理指定 切入點表達式時,最好使用value 屬性

4)、 切入點 名稱(方法名)不能為 execution

5)、 AfterReturning 指定了 returning 屬性接受目標方法返回結果,注意 參數類型需要和返回結果類型一致(滿足 resutType instanceof argsType )

增強方式的順序:

1、 @Bean(name=「xxx」)

修飾方法,該方法的返回值為spring容器中管理的bean。當然該註解和上面的@Component效果一樣,主要用於做區分。

@Bean 通常使用在 @Configuration 修飾的配置類中,該註解功能相當於 元素

常用的屬性:

a、 name:bean id 。name可以省略,省略時bean名稱為方法名。也可以指定多個名稱(逗號隔開)。

b、 autowire: 是否自動注入,默認Autowire.NO

c、 initMethod:bean的初始化方法。在依賴注入之後執行

d、 destroyMethod: spring容器關閉時bean調用的方法
當然 @Bean 還可以配合 @Scope 指定bean的作用域

2、 @ConfigurationProperties

用於從屬性文件中獲取值 application.properties 或者 application.yml 。當然了 如果在配置文件中引入其他配置文件,也可以獲取到屬性值。

包含的屬性:

a、 value | prefix 兩者互為別名。指定前綴,默認為""

b、 ignoreUnknownFields:默認為true。是否忽略未知欄位,當實體中的欄位在配置文件中不存在時,是忽略還是拋出異常

c、 ignoreInvalidFields: 默認false。 是否忽略不合法的欄位,此處的不合法是指類型不合適,配置文件中存在改配置但是無法轉化為指定的欄位類型。

Mybatis屬性配置

application.properties:

ConfigurationProperties 可以配置前綴,然後會根據實體的變數名拼接前綴,去配置文件中查詢配置。

3、 @Configuration

修飾一個Java類,被修飾的類相當於一個xml配置文件。功能類似於 。在springboot中大量使用了該註解,該註解提供了一種使用Java類方式配置bean。

可以發現 @Configuration使用了@Component 註解修飾。

實例

配置Mybatis會話工廠

4、 @Import

功能和 類似,修飾Java類,用於向當前類導入其他配置類。 可以導入多個配置文件,通常用於導入不在包掃描范圍內的配置文件。可以被掃描的配置類可以直接訪問,沒有必要使用@Import 導入。

比如 SpringBoot的啟動類指定的包掃描路徑為 com.example

資料庫的配置文件在 com包下。

在MyBatisConfig 中引入 DataSourceConfig, 就會解析DataSourceConfig。將解析出的Bean交給容器管理

5、 @ImportResource

修飾Java類,用於向類引入xml配置文件。

用於導入包含bean定義的配置文件,功能和 類似。默認情況下可以處理後綴為 .groovy 和.xml 的配置文件

6、 @Value("${expression}")

修飾成員變數或者 方法、構造器的參數,用於屬性值注入(在配置文件中配置的值)。

注意: @Value不能對 static 屬性注入。

如果的確需要注入到靜態變數,可以通過以下方式間接進行注入:

1)、設置一個私有靜態 實例

2)、通過構造函數或者 @PostConstruct 註解為 靜態實例 賦值,指向本身(this)

3)、對成員屬性注入內容

4)、提供靜態方法,使用靜態實例獲取成員屬性

7、@PropertySource(value=「classpath:jdbc.properties」)

該註解用來載入屬性文件。

常用屬性:

a、 ignoreResourceNotFound: 當資源文件找不到的時候是否會忽略該配置,而不是拋出錯誤。一般用於可選項

b、 encoding : 資源文件使用什麼編碼方式

c、 value : 指定屬性文件位置。可以配置多個屬性文件,不可以使用通配符。

在 PropertySource 中可以指定多個路徑,並且會將屬性文件中的值載入到 Environment 中。

@ConfigurationProperties 和 @PropertySource

它們的使用有一些差異:

1)、 @PropertySource 使用該註解載入的是 相對獨立的屬性文件,可以同時載入多個文件 (xxx.properties),而且 不支持自動注入 , 不支持前綴注入

2)、 @ConfigurationProperties 用於載入配置文件(application.properties | application.yml)。該註解功能更強大:

a、 支持前綴注入 ( prefix )

b、 相同屬性名的自動注入

c、 $("") 支持EL表達式注入

應用實例:

在以往的開發中通常會將資料庫連接信息存放在單獨的屬性文件中(jdbc.properties)。而在spring boot 中我們會將資料庫的信息存放在配置文件中,這會極大便利開發工作。

jdbc.properties:

可以通過 @Value 註解將配置文件的值注入到實體類中

也可以注入Environment ,通過Environment 獲取值

1、 @ResponseBody

控制器方法返回值會使用 HttpMessageConverter 進行數據格式化,轉化為JSON字元串。

同樣的 ResponseBodyAdvice: 針對使用@ResponseBody的註解的類,方法做增強處理。

2、 @RestController

@RestController = @Controller + @ResponseBody , 所以通常直接使用@RestController 註解

3、 @RequestBody

從Reuqest請求體中獲取內容,綁定到方法的指定參數上。 SpringMVC 使用HttpMessageConverter 介面將請求體中的數據轉化為方法參數類型。

SpringMVC 給用戶對參數的處理提供了很大支配權。 我們可以使用 介面RequestBodyAdvice 來實現對參數進行攔截處理。

注意

1)、 RequestBodyAdvice : 針對所有以@RequestBody的參數做處理

2)、 自定義的處理對象類上必須得加上@ControllerAdvice註解!

利用此功能我們可以做以下處理工作:

1)、參數做解密處理。

2)、修改接受的參數數據。

4、 @RequestParam

從Request請求中獲取指定的參數。

可以設置的屬性:

1)、 required : 默認為true 參數必須存在 。參數不存在時拋出異常(). 提示信息

2)、 defaultValue : 設置參數默認值。 當參數沒有提供或者為空值時生效, 包含隱式定義 required=false

3)、 name | value , 互為別名的屬性, 綁定請求中的參數名。 request.getParameter(name);

5、 @RequestMapping

用於設置 請求 和 Method 的映射關系。指明何種請求可以和方法匹配

可配置屬性值:

1)、 path、value、 name, 互為別名,設置可以處理的url。

2)、 consumes,字元串數組。 指定可以處理的 媒資類型,僅當請求頭中的 Content-Type 與其中一種媒體類型匹配時,才會映射請求。所以該配置會縮小可匹配的請求。 當url 匹配但是consumes不匹配時, 狀態碼415。 不設置的話,表示不限制媒資類型,參數的具體使用何種方式解析,SpringMVC會選擇合適的處理器處理。

3)、 proces,字元串數組。 生成的媒資類型,該屬性會影響實際的輸出類型。和consumes一樣,改配置會縮小匹配的范圍。 只有當請求頭中的 Accept 與 配置的任意一個媒資類型匹配時,才會映射請求。 當url 匹配與consumes不匹配時, 狀態碼406 。 比如:為了生成UTF-8編碼的JSON響應,應使用 MediaType.APPLICATION_JSON_UTF8_VALUE。

6. spring怎麼配置註解

@Repository註解:

1 package imooc_spring.test.anotation.myrepository;

2

3 import org.springframework.stereotype.Repository;

4

5 /**

6 * 指定id,默認為dAO,即類名首字母小寫,如果指定了名稱那麼只能ctx.getBean(指定名稱)來獲取bean

7 * 這個例子里就只能通過ctx.getBean("wyl)來獲取DAO 的實例了;

8 *

9 * @author Wei

10 */

11 @Repository("wyl")

12 public class DAO {

13 /**

14 * 返回x和y的乘積

15 *

16 * @param x

17 * @param y

18 * @return x*y

19 */

20 public int multi(int x, int y) {

21 return x * y;

22 }

23 }

復制代碼

@Component 註解:

復制代碼

1 package imooc_spring.test.anotation;

2

3 import org.springframework.stereotype.Component;

4 /**

5 * Component 註解

6 * @author Wei

7 *

8 */

9 @Component

10 public class TestObj {

11 public void SayHi(){

12 System.out.println(" Hi this is TestObj.SayHi()...");

13 }

14 }

復制代碼

@Controller註解悶吵:

復制代碼

1 package imooc_spring.test.anotation;

2

3 import org.springframework.stereotype.Controller;

4

5 @Controller

6 public class UserController {

7 public void execute(){

8 System.out.println(" UserController.execute()...");

9 }

10 }

復制代碼

@Repository註解:

復制代碼

1 package imooc_spring.test.anotation;

2

3 import org.springframework.stereotype.Repository;

4

5 //@Repository

6 @Repository("wyl_repo")

7 public class UserRepositoryImpl implements IUserRepository {

8 //模譽拍擬持久化層

9 慶罩羨 @Override

10 public void save() {

11 // TODO Auto-generated method stub

12 System.out.println(" UserRepositoryImpl.save()...");

13 }

14

15 }

復制代碼

@Service註解:

復制代碼

1 package imooc_spring.test.anotation;

2

3 import org.springframework.stereotype.Service;

4

5 @Service

6 public class UserService {

7 public void add(){

8 System.out.println(" UserService.add()...");

9 }

10 }

閱讀全文

與spring註解教程相關的資料

熱點內容
編程怎麼做3d生存游戲 瀏覽:955
word使用教程下載 瀏覽:295
電腦文件平鋪圖片默認大小 瀏覽:115
文件查看設置信息失敗 瀏覽:668
編程如何編出烏鴉喝水的課文 瀏覽:20
國家反詐app報案助手怎麼使用 瀏覽:439
秘密文件丟失多少天 瀏覽:237
js中csstext 瀏覽:382
目標文件名過長復制 瀏覽:892
樂動力計步器老版本 瀏覽:933
壓縮文件鏈接怎麼編輯 瀏覽:808
如何鎖定PDF文件里的圖章 瀏覽:89
資料庫超時是什麼 瀏覽:649
文件怎麼改整列內容 瀏覽:764
360壓縮文件發郵件空白 瀏覽:813
上哪裡查自己大數據 瀏覽:907
編程語言怎麼學車 瀏覽:189
編程該怎麼學才能先找工作 瀏覽:524
文件刻制光碟多少錢 瀏覽:861
校園網的網路組成結構 瀏覽:862

友情鏈接