spring-boot 注解

spring-boot使用了大量的注解來進行開發(fā),

Application類,是spring-boot的啟動類,

@SpringBootApplication 申明讓spring boot自動給程序進行必要的配置等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三個配置。其中@ComponentScan讓spring Boot掃描到Configuration類并把它加入到程序上下文。

@SpringBootApplication

public class FeedApplication {

public static void main(String[] args) {

SpringApplication.run(FeedApplication.class, args);

}

}

SpringApplication.run(FeedApplication.class, args);

該方法就是用來啟動項目的。

@Configuration 等同于spring的XML配置文件;使用Java代碼可以檢查類型安全。

示例代碼:

@Configuration

@PropertySource("classpath:/database.properties")

public class DataBaseConfig {

@Bean

@ConfigurationProperties(prefix = "notice.datasource")

public DataSource noticeDataSource() {

return DataSourceBuilder.create().build();

}

@Bean

public JdbcTemplate noticeJDBCTemplate() {

return new JdbcTemplate(noticeDataSource());

}

}

這個就是用來配置數(shù)據(jù)庫的配置。添加@Configuration 以后, spring-boot啟動的時候,就會自動識別這個使用配置文件,然后就會自動加載配置。

@PropertySource("classpath:/database.properties")這個是用來定于配置文件的位置,如果沒有添加這個注解的話,就會默認去application.ConfigurationPropertie中進行查找。

@Controller:用于定義控制器類,在spring 項目中由控制器負責將用戶發(fā)來的

URL請求轉發(fā)到對應的服務接口(service層),一般這個注解在類中,

通常方法需要配合注解@RequestMapping(提供路由信息,負責URL到Controller

中的具體函數(shù)的映射)。

示例代碼:

@Controller

@RequestMapping("/feed/notice")

public class FeedController {

@Autowired ()

private FeedGetService feedGetService;

@Autowired

private FeedPublishService publishService;

/**

* 獲取用戶的個人消息以及系統(tǒng)消息的條數(shù)

*/

@RequestMapping("/getNoticeNum")

@ResponseBody

public Object getNoticeNum(@RequestParam final String user, @RequestParam final String locale,

@RequestParam final String area, @RequestParam final String channel,

@RequestParam final String version) {

GetUserNoticeNum userNoticeNum = feedGetService.getNoticeNum(user, locale, area, channel, version);

return new ResponseResult<>(userNoticeNum).success();

}

}

@EnableAutoConfiguration 自動配置。

Spring Boot自動配置(auto-configuration):嘗試根據(jù)你添加的jar依賴自動配置你的

Spring 應用。例如,如果你的classpath下存在HSQLDB,

并且你沒有手動配置任何數(shù)據(jù)庫連接beans,

那么我們將自動配置一個內存型(in-memory)數(shù)據(jù)庫”。

你可以將@EnableAutoConfiguration 或者@SpringBootApplication

注解添加到一個@Configuration 類上來選擇自動配置。如果發(fā)現(xiàn)應用了你

不想要的特定自動配置類,你可以使用@EnableAutoConfiguration

注解的排除屬性來禁用它們

@ComponentScan 組件掃描,可自動發(fā)現(xiàn)和裝配一些Bean。

表示將該類自動發(fā)現(xiàn)掃描組件。如果掃描到有@Component、@Controller、@Service 等這些注解的類,并注冊為Bean,

可以自動收集所有的Spring組件,包括@Configuration類。

我們經常使用@ComponentScan 注解搜索beans,并結合@Autowired 注解導入。

如果沒有配置的話,Spring Boot 會掃描啟動類所在包下以及子

包下的使用了@Service,@Repository 等注解的類。(我的項目中就沒有進行配置。)

@Component 可配合CommandLineRunner使用,在程序啟動后執(zhí)行一些基礎任務。

@RestController 注解是 @Controller 和 @ResponseBody 的合集,

表示這是個控制器bean,并且是將函數(shù)的返回值直

接填入HTTP響應體中,是REST風格的控制器。

@Autowired:自動導入依賴的bean 。把配置好的Bean拿來用,完成屬性、方法的組裝,

它可以對類成員變量、方法及構造函數(shù)進行標注,完成自動裝配的工作。

當加上(required=false)時,就算找不到bean也不報錯。

@Component:泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注。

@Service:一般用于修飾service層的組件

@Bean:用@Bean 標注方法等價于XML中配置的bean。放在方法的上面,而不是類,

意思是產生一個bean,并交給spring管理。

@PathVariable 獲取參數(shù)。

@Value:注入Spring boot application.properties配置的屬性的值。

示例代碼:

@Value("${send.sms.byecomm}")

private String sendSMSByEcomm;

application.properties配置文件中配置的是 send.sms.byecomm=http://iran.java.dicepay

spring boot 就會自動將值賦給sendSMSByEcomm,我們調用sendSMSByEcomm就可以了。

@Repository:使用@Repository 注解可以確保DAO或者repositories 提供異常轉譯,

這個注解修飾的DAO或者repositories類會被ComponetScan發(fā)現(xiàn)并配置,

同時也不需要為它們提供XML配置項。

示例代碼:

@Repository

public class FeedRedisDao {

@Resource

private StringRedisTemplate feedRedisTemplate;

public void setGetSysNotice(String user, int noticeId, int day) {

String key = "getSysNotice_" + user + "_" + noticeId;

feedRedisTemplate.opsForValue().set(key, user, day, TimeUnit.DAYS);

}

}

@Qualifier:當有多個同一類型的Bean時,可以用@Qualifier(“name”)來指定。

與@Autowired 配合使用。@Qualifier 限定描述符除了能根據(jù)名字進行注入,

但能進行更細粒度的控制如何選擇候選者,具體使用方式如下:

示例代碼:

@Configuration

@PropertySource("classpath:/database.properties")

public class DataBaseConfig {

@Bean(name = "npsDataSource")

@Primary

@ConfigurationProperties(prefix = "integration.datasource")

public DataSource npsDataSource() {

return DataSourceBuilder.create().build();

}

@Bean(name = "npsJDBCTemplate")

public JdbcTemplate npsJDBCTemplate(@Qualifier("npsDataSource") DataSource npsDataSource) {

return new JdbcTemplate(npsDataSource);

}

@Bean(name = "iranDataSource")

@ConfigurationProperties(prefix = "iran.datasource")

public DataSource iranDataSource() {

return DataSourceBuilder.create().build();

}

@Bean(name = "iranJDBCTemplate")

public JdbcTemplate iranJDBCTemplate(@Qualifier("iranDataSource") DataSource iranDataSource) {

return new JdbcTemplate(iranDataSource);

}

}

示例代碼中展示的是兩個數(shù)據(jù)的配置,為了能讓數(shù)據(jù)庫加載正確,所以每一個bean都定義了名稱。

spring-boot啟動的時候會默認加載一個數(shù)據(jù)庫配置,但是配置兩個的時候spring-boot

就會不知道該加載那個數(shù)據(jù)庫而報錯,所以需要@Primary 注解,@Primary 表示默認加載

哪一個配置。這樣在啟動的時候就會默認加載npsDataSource這個數(shù)據(jù)庫,然后當你使用iranDataSource

的時候就會自動加載進來,

@Resource(name=”name”,type=”type”):與@Autowired 干類似的事

對于spring-boot 的配置文件有.yml和.properties兩種,

.yml的寫法

server:

port: 8080

address: localhost

iran:

datasource:

url: dbc:mysql://localhost:3306/asset

username: root

password: root

.properties的寫法

server.port=8080

iran.datasource.url=jdbc:mysql://localhost:3306/asset

iran.datasource.username=root

iran.datasource.password=root

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 1.@SpringBootApplication 申明讓spring boot自動給程序進行必要配置,這個配置等于...
    fangzy0723閱讀 1,378評論 0 2
  • 整理...
    文思li閱讀 1,001評論 0 4
  • 今天,得到直播請來了陳春花老師,我心中仰慕已久的女神。所以,在沒有WiFi的情況下,毅然決然的打開“得到”聽直播。...
    小多媛媛閱讀 1,161評論 0 1

友情鏈接更多精彩內容