SpringBoot 常用注解說明
@SpringBootApplication
@SpringBootApplication
public class SpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication.class);
}
}
標(biāo)志著這是一個(gè)SpringBoot入口文件,所有SpringBoot應(yīng)用程序都依賴這注解啟動(dòng)
@Configuration @Bean
@Configuration
public class AppConfig{
@Bean("user")
public User initUser() {
User user = new User();
user.setId(1L);
user.setUserName("user_name_1");
user.setNote("note_1");
return user;
}
}
@Configuration 代表這是一個(gè)Java配置文件,Spring的容器會(huì)根據(jù)它來生成IOC容器去裝配bean
@Bean 代表將initUser方法返回的POJO裝配到IoC容器中,而其name屬性定義了這Bean的名稱,如果沒有配置name屬性,則將方法名initUser作為Bean的名稱存入Spring IoC容器中
@Component @Value
@Component("user")
public class User {
@Value("1")
private Long id;
@Value("user_name_1")
private String userName;
@Value("note_1")
private String note;
/** setter and getter **/
}
@Component 表明這個(gè)類將被 Spring IoC 容器掃描裝配,其中配置的“user”則是作為Bean的名稱,當(dāng)然也可以不配置這個(gè)字符串,那么IoC容器就會(huì)把類名第一個(gè)字母作為小寫,其他不變作為Bean名稱存入IoC容器中
@Value 指定具體值,使得Spring IoC 給予對應(yīng)的屬性注入對應(yīng)的值
@ComponentScan
@ComponentScan
public class AppConfig {}
使用 @ComponentScan 意味著它會(huì)進(jìn)行掃描,但是它只會(huì)掃描類AppConfig所在的當(dāng)前包及其子包
@ComponentScan("com.springboot.demo.*")
以上方式可以實(shí)現(xiàn)掃描 com.springboot.demo 包下所有所有類,推薦使用這種方式掃描這種方式進(jìn)行指定路徑掃描
@AutoWired
@AutoWired
private Animal animal;
@AutoWired是我們在Spring中最常用的注解之一,它會(huì)根據(jù)屬性的類型找到對應(yīng)的Bean進(jìn)行裝配
@Primary
@Component
@Primary
public class cat implements Animal{}
告訴 Spring IoC 容器,當(dāng)發(fā)現(xiàn)存在多個(gè)同樣類型的Bean時(shí),優(yōu)先使用我注入
@Qualifier
@Component
public class BussinessPerson implements Person {
@AutoWired
@Qualifier("cat")
private Animal animal;
}
@Component
@Qualifier("cat")
public class Cat implements Animal {}
@Component
@Qualifier("dog")
public class Dog implements Animal {}
當(dāng)存在多個(gè)相同類型的Bean時(shí),使用 @Qualifier 實(shí)現(xiàn)通過類型和名稱找到Bean