1. 程式人生 > >spring boot 註解

spring boot 註解

@RestController和@RequestMapping註解

我們的Example類上使用的第一個註解是 @RestController 。這被稱為一個構造型(stereotype)註解。它為閱讀程式碼的人們提供建議。對於Spring,該類扮演了一個特殊角色。在本示例中,我們的類是一個web @Controller ,所以當處理進來的web請求時,Spring會詢問它。@RequestMapping 註解提供路由資訊。它告訴Spring任何來自"/"路徑的HTTP請求都應該被對映到 home 方法。 @RestController 註解告訴Spring以字串的形式渲染結果,並直接返回給呼叫者。

注: @RestController 和 @RequestMapping 註解是Spring MVC註解(它們不是Spring Boot的特定部分)

@EnableAutoConfiguration註解

第二個類級別的註解是 @EnableAutoConfiguration 。這個註解告訴Spring Boot根據新增的jar依賴猜測你想如何配置Spring。由於 spring-boot-starter-web 添加了Tomcat和Spring MVC,所以auto-configuration將假定你正在開發一個web應用並相應地對Spring進行設定。Starter POMs和Auto-Configuration:設計auto-configuration的目的是更好的使用"Starter POMs",但這兩個概念沒有直接的聯絡。你可以自由地挑選starter POMs以外的jar依賴,並且Spring Boot將仍舊盡最大努力去自動配置你的應用。

你可以通過將 @EnableAutoConfiguration 或 @SpringBootApplication 註解新增到一個 @Configuration 類上來選擇自動配置。
注:你只需要新增一個 @EnableAutoConfiguration 註解。我們建議你將它新增到主 @Configuration 類上。

如果發現應用了你不想要的特定自動配置類,你可以使用 @EnableAutoConfiguration 註解的排除屬性來禁用它們。

複製程式碼
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*; @Configuration @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration { }
複製程式碼

@Configuration

Spring Boot提倡基於Java的配置。儘管你可以使用一個XML源來呼叫 SpringApplication.run() ,我們通常建議你使用 @Configuration 類作為主要源。一般定義 main 方法的類也是主要 @Configuration 的一個很好候選。你不需要將所有的 @Configuration 放進一個單獨的類。 @Import 註解可以用來匯入其他配置類。另外,你也可以使用 @ComponentScan 註解自動收集所有的Spring元件,包括 @Configuration 類。

如果你絕對需要使用基於XML的配置,我們建議你仍舊從一個 @Configuration 類開始。你可以使用附加的 @ImportResource 註解載入XML配置檔案。

@Configuration註解該類,等價 與XML中配置beans;用@Bean標註方法等價於XML中配置bean

 @ComponentScan

你可以自由地使用任何標準的Spring框架技術去定義beans和它們注入的依賴。簡單起見,我們經常使用 @ComponentScan 註解搜尋beans,並結合 @Autowired 構造器注入。
如果使用上面建議的結構組織程式碼(將應用類放到根包下),你可以新增 @ComponentScan 註解而不需要任何引數。你的所有應用程式元件( @Component , @Service , @Repository , @Controller 等)將被自動註冊為Spring Beans。

@SpringBootApplication

很多Spring Boot開發者總是使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 註解他們的main類。由於這些註解被如此頻繁地一塊使用(特別是你遵循以上最佳實踐時),Spring Boot提供一個方便的 @SpringBootApplication 選擇。
該 @SpringBootApplication 註解等價於以預設屬性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 。

複製程式碼
package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
複製程式碼

@ConfigurationProperties

屬性注入

複製程式碼
@Component
@ConfigurationProperties(prefix="connection")
public class ConnectionSettings {
    private String username;
    private InetAddress remoteAddress;
    // ... getters and setters
}
複製程式碼

為了使用@ConfigurationProperties beans,你可以使用與其他任何bean相同的方式注入它們

複製程式碼
@Service
public class MyService {
    @Autowired
    private ConnectionSettings connection;
    //...
    @PostConstruct
    public void openConnection() {
        Server server = new Server();
        this.connection.configure(server);
    }
}
複製程式碼

正如使用@ConfigurationProperties註解一個類,你也可以在@Bean方法上使用它。當你需要繫結屬性到不受你控制的第三方元件時,這種方式非常有用。

為了從Environment屬性配置一個bean,將@ConfigurationProperties新增到它的bean註冊過程:

@ConfigurationProperties(prefix = "foo")
@Bean
public FooComponent fooComponent() {
...
}

和上面ConnectionSettings的示例方式相同,任何以foo為字首的屬性定義都會被對映到FooComponent上。

Spring Boot將嘗試校驗外部的配置,預設使用JSR-303(如果在classpath路徑中)。你可以輕鬆的為你的@ConfigurationProperties類新增JSR-303 javax.validation約束註解:

複製程式碼
@Component
@ConfigurationProperties(prefix="connection")
public class ConnectionSettings {
@NotNull
private InetAddress remoteAddress;
// ... getters and setters
}
複製程式碼

@EnableConfigurationProperties

當@EnableConfigurationProperties註解應用到你的@Configuration時,任何被@ConfigurationProperties註解的beans將自動被Environment屬性配置

你可以通過在@EnableConfigurationProperties註解中直接簡單的列出屬性類來快捷的註冊@ConfigurationProperties bean的定義。

@Configuration
@EnableConfigurationProperties(ConnectionSettings.class)
public class MyConfiguration {
}

@Component和@Bean

@Component被用在要被自動掃描和裝配的類上。@Component類中使用方法或欄位時不會使用CGLIB增強(及不使用代理類:呼叫任何方法,使用任何變數,拿到的是原始物件)Spring 註解@Component等效於@Service,@Controller,@Repository
@Bean主要被用在方法上,來顯式宣告要用生成的類;用@Configuration註解該類,等價 與XML中配置beans;用@Bean標註方法等價於XML中配置bean。

現在專案上,本工程中的類,一般都使用@Component來生成bean。在把通過web service取得的類,生成Bean時,使用@Bean和getter方法來生成bean

@Profiles

Spring Profiles提供了一種隔離應用程式配置的方式,並讓這些配置只能在特定的環境下生效。任何@Component或@Configuration都能被@Profile標記,從而限制載入它的時機。

@Configuration
@Profile("production")
public class ProductionConfiguration {
// ...
}

以正常的Spring方式,你可以使用一個spring.profiles.active的Environment屬性來指定哪個配置生效。你可以使用平常的任何方式來指定該屬性,例如,可以將它包含到你的application.properties中:

 spring.profiles.active=dev,hsqldb


相關推薦

Spring Boot註解方式集成Mybatis

face batis update pac conn src jar包 local code 一、無配置文件註解版 1.pom文件必要jar包的引入 1 <dependency> 2 <groupId>mysql</groupId>

spring boot 註解大全

生成策略 sequence urn basic in-memory 任務 轉發 col tom [springBoot系列]--springBoot註解大全 一、註解(annotations)列表 @SpringBootApplication:包含了@ComponentS

Java 小記 — Spring Boot 註解

控制 配置 scan 復雜 () 很好 查看源碼 回顧 www. 前言 本篇隨筆將對 Spring Boot 中的常用註解做一個簡單的整理歸檔,寫作順序將從啟動類開始並逐步向內外擴展,目的即為了分享也為了方便自己日後的回顧與查閱。 1. Application 啟動類示例

Spring Boot註解說明

掃描 目的 組成 OS resp red div app 使用 Spring Boot使用“習慣優於配置”的理念使項目快速運行起來,這些項目都是基於spring框架的,可以不用或者使用很少的Spring配置。 1、@SpringBootApplication:Spring

Spring Boot 註解的使用

 Spring Boot 優於Spring mvc ,SSM,SSH 的一個亮點就是他使用了好多的註解。 1. @Autowired  這個註解的作用是將其他的類,介面引入,類似於之前的類的初始化等,用這個註解,類中或介面的方法就可以直接呼叫了。 這個註解和@Inject,

Spring Boot註解建立bean,容器

1.介面  public interface Animal { public void print(); } 2.Cat類 import org.springframework.stereotype.Component; @Component public class Ca

spring boot 註解方式配置多資料來源與使用

1、首先看一下application-dev.yml 配置 spring:     datasource:         type: com.alibaba.druid.pool.Dru

Spring Boot註解

自動配置 Spring使用@Configuration作為配置的註解,當Spring發現某個類使用了@Configuration標註了,就去將該類下尋找使用@Bean註解的方法建立bean並放入到容器中 @Configuration spring boot的

spring boot 註解整理,用過的

1、@Repository (1)@Repository(value="userDao") 該註解是告訴Spring,讓Spring建立一個名字叫“userDao”的UserDaoImpl例項。 當Service需要使用Spring建立的名字叫“userDao”的Use

Spring Boot 註解啟動的兩種方式

[email protected] @EnabeAutoConfiguration @ComponentScan<strong>package com.example.mypro

Spring boot註解的意義以及作用

利用註解:隱式配置,例如:@Autowired、@Bean、@Component等,通過註解來簡化xml檔案。利用Java檔案:顯示配置,比xml配置的優勢是具備型別安全。利用傳統的xml配置檔案。註解(annotations)列表[email protected]

spring boot 註解異常 ControllerAdvice,ExceptionHandler

異常方法放入這個類並加上ControllerAdvice註解 @ControllerAdvice public class MyControllerAdvice { Controller出現異常,會根據對應的異常找到定義的異常,沒有則統一進入異常的父類Exception

spring boot註解實現許可權控制

1、自定義註解 Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RoleCheck { String[] roles() default

spring boot 註解

@RestController和@RequestMapping註解 我們的Example類上使用的第一個註解是 @RestController 。這被稱為一個構造型(stereotype)註解。它為閱讀程式碼的人們提供建議。對於Spring,該類扮演了一個特殊角色。在本示例中,我們的類是一個web @C

Spring Boot 註解配置與EhCache使用

註解配置與EhCache使用 建立一個maven專案 pom檔案引入 <dependency> <groupId>org.springframework.boot</groupId>

spring-boot註解整理

一、註解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration註解。其中@ComponentScan讓spring Bo

spring-boot 註解詳解

一、註解(annotations)列表  @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration註解。其中@ComponentScan讓spring Boot掃描到C

Spring Boot註解完成Restful API

利用註解完成Restful API @RestController public class HelloController { @RequestMapping("/hello") public St

net core天馬行空系列:原生DI+AOP實現spring boot註解式程式設計

       寫過spring boot之後,那種無處不在的註解讓我非常喜歡,比如屬性注入@autowire,配置值注入@value,宣告式事物@Transactional等,都非常簡潔優雅,那麼我就在想,這些在net core裡能實現麼?經過一番摸索,終於實現並整理成

Spring Boot 註解之ObjectProvider原始碼追蹤

最近依舊在學習閱讀Spring Boot的原始碼,在此過程中涉及到很多在日常專案中比較少見的功能特性,對此深入研究一下,也挺有意思,這也是閱讀原始碼的魅力之一。這裡寫成文章,分享給大家。 自動配置中的ObjectProvider 在閱讀Spring Boot自動配置原始碼中關於Tomcat的配置時,看到這樣如