在SpringBoot框架中,註解作爲一種隱式配置,極大的簡化了以前xml文件的配置方式。SpringBoot中包含許多種類的註解,這裏對在SpingBoot項目中常用到的一些註解的進行大體的概括總結;html
一、@SpringBootApplication前端
在SpirngBoot啓動類裏面,都加入了此啓動註解,此註解是個組合註解,包括了@SpringBootConfiguration 、@EnableAutoConfiguration和@ComponentScan註解。web
,其實兩種功能一致,都是標註該類爲配置類
spring
容器中。注意事項:spring
exclude
進行排除@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@Configuration @ComponentScan(basePackages = {"com.test.service"}) //引入第三方jar包下的類
二、@Import數據庫
@Import註解可用來導入一個或者多個 Spring 配置文件,特別是第三方jar包下的一些配置類,須要經過Import註解進行加載,代碼以下所示json
@Import({KafkaConfig.class, JedisConfig.class}) //引入第三方jar包裏配置類
以通常的的配置類中用到的註解爲例bootstrap
一、@Configuration後端
@Configuration專門用來標註配置類,它通常會配合api
二、@Beanspringboot
使用@Bean註解拿到配置返回相關實例,並放入sping容器中統一管理
三、@PropertySource
目的是加載指定路徑下的屬性文件
五、@Value
配合@PropertySource註解使用,指定該字段對應的配置文件中的內容
四、@Order
利用@Order控制配置類的加載順序
結合以上註解對kafka進行配置示例代碼以下
@Configuration @PropertySource("classpath:spring-kafka.properties") @Order(2) public class KafkaConfig { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; @Bean public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<Object, Object>> kafkaListenerContainerFactory() { ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<Object, Object>(); factory.setConsumerFactory(consumerFactory()); factory.setConcurrency(1); // factory .getContainerProperties().setPollTimeout(1000); return factory; } }
一、@Service
用於標註服務層,主要用來進行業務的邏輯處理
二、@Repository
用於標註持久層,主要用來進行數據庫相關操做
三、@Component
一個通用的註解,能夠註解各類組件,就是說當咱們須要注入sping容器中bean類沒有明確分類時(不屬於@service、@Repository等的時候),咱們就可使用@Component來標註這個類。
四、@Scope
spring容器管理bean默認是單例模式,若是你須要使用多例模式能夠經過@Scope("prototype")註解來實現。
五、@Autowired
這個就很簡單了,用於Spring容器中Bean類實例的注入
六、@PostConstruct
在Bean初始化以後(構造方法和@Autowired以後)執行指定操做。若是在項目中有些操做須要在Bean類構造後執行,可使用@PostConstruct註解,實例代碼以下
@Component public class demo { @PostConstruct public void start() { //在構造方法和@Autowired注入實例後執行 } }
一、@Controller 和 @RestController
控制器的註解,處理http請求的入口,這兩個註解的主要區別在於@Controller中若是須要返回json數據須要使用@ResponseBody註解來配合,直接用@RestController則直接返回json數據
二、@RequestMapping
RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。
RequestMapping註解有六大屬性
value, method;
value: 指定請求的實際地址,指定的地址能夠是URI Template 模式(後面將會說明);
method: 指定請求的method類型, GET、POST、PUT、DELETE等;
consumes,produces;
consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;
produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;
params,headers;
params: 指定request中必須包含某些參數值是,才讓該方法處理。
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求;
RequestMapping的簡化註解有:
@GetMapping 等同於 @RequestMapping(method = RequestMethod.GET) @PostMapping 等同於 @RequestMapping(method = RequestMethod.POST) @PutMapping 等同於 @RequestMapping(method = RequestMethod.PUT) @DeleteMapping 等同於 @RequestMapping(method = RequestMethod.DELETE) @PatchMapping 等同於 @RequestMapping(method = RequestMethod.PATCH)
三、@RequestBody
RequestBody註解容許request的參數在reqeust體中,也就是後端以實體的方式接收前端發送的數據
四、@RequestParam
RequestParam註解則是以不一樣參數之間用&分隔的方式接收前端發送的數據
結合以上註解的常規示例代碼以下
@RestController @RequestMapping("/api") public class ApiController extends BaseController { @PostMapping("/login") public User login(@RequestBody User user){ //代碼 } @GetMapping("/getUser") public User getUser(@RequestParam String userName, @RequestParam String userPhone){ //代碼 } }
以上就是在SpirngBoot項目中常用到的一些註解進行的總結,固然還有不少其餘註解在這裏就不一一贅述了。