在SpringBoot框架中,注解做為一種隱式配置,極大的簡化了之前xml檔案的配置方式,SpringBoot中包含許多種類的注解,這里對在SpingBoot專案中經常使用到的一些注解的進行大致的歸納總結;
一、啟動相關
1、@SpringBootApplication
SpringBootApplication注解:
- @Target(ElementType.TYPE)
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Inherited
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @ComponentScan(excludeFilters = {
- @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
- @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
- public @interface SpringBootApplication {
在SpirngBoot啟動類里面,都加入了此啟動注解,此注解是個組合注解,三個比較重要的:
- @SpringBootConfiguration 繼承至@Configuration,其實兩種功能一致,都是標注該類為配置類
- @EnableAutoConfiguration 這個注解是SpirngBoot自動配置的核心所在,通過此注解,能所有符合自動配置條件的bean的定義加載到spring容器中,
- @ComponentScan 該注解會掃描當前包及子包下面被納入sping容器管理的類,
注意事項:
- 一般我們在實際專案中會根據自己的需要排除一些無需自動配置的類,例如我們會配置自己的資料庫,所以就不需要springboot自動注入資料源,這可以利用exclude進行排除
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
- 當需掃描第三方jar包時,我們可以通過在配置類中使用@Configuration與@ComponentScan來引入第三方jar包下的類
@Configuration
@ComponentScan(basePackages = {"com.test.service"}) //引入第三方jar包下的類
2、@Import
@Import注解可用來匯入一個或者多個 Spring 組態檔,特別是第三方jar包下的一些配置類,需要通過Import注解進行加載,代碼如下所示
@Import({KafkaConfig.class, JedisConfig.class}) //引入第三方jar包里配置類
二、配置相關
以一般的的配置類中用到的注解為例
1、@Configuration
@Configuration專門用來標注配置類,它一般會配合
2、@Bean
使用@Bean注解拿到配置回傳相關實體,并放入sping容器中統一管理
3、@PropertySource
目的是加載指定路徑下的屬性檔案
4、@Value
配合@PropertySource注解使用,指定該欄位對應的組態檔中的內容
5、@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; } }
三、構造相關
1、@Service
用于標注服務層,主要用來進行業務的邏輯處理
2、@Repository
用于標注持久層,主要用來進行資料庫相關操作
3、@Component
一個通用的注解,可以注解各種組件,就是說當我們需要注入sping容器中bean類沒有明確分類時(不屬于@service、@Repository等的時候),我們就可以使用@Component來標注這個類,
4、@Scope
spring容器管理bean默認是單例模式,如果你需要使用多例模式可以通過@Scope("prototype")注解來實作,
5、@Autowired
這個就很簡單了,用于Spring容器中Bean類實體的注入
6、@PostConstruct
在Bean初始化之后(構造方法和@Autowired之后)執行指定操作,如果在專案中有些操作需要在Bean類構造后執行,可以使用@PostConstruct注解,實體代碼如下
@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){ //代碼 } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/45089.html
標籤:Java
