用于創(chuàng)建對象的
相當(dāng)于
<bean id="" class="">
@Component
作用:把資源讓 spring 來管理,相當(dāng)于在 xml 中配置一個(gè) bean。
屬性:value:指定bean 的 id,如果不指定value 屬性,默認(rèn) bean 的id 是當(dāng)前類的類名,首字母小寫。
@Controller @Service @Repository
他們?nèi)齻€(gè)注解都是針對一個(gè)的衍生注解,他們的作用及屬性都是一模一樣的,他們只不過是提供了更加明確的語義化。
@Controller:一般用于表現(xiàn)層的注解。
@Service:一般用于業(yè)務(wù)層的注解。
@Repository:一般用于持久層的注解。
用于注入數(shù)據(jù)的
相當(dāng)于:
<property name="" ref=""><property name="" value="">
@Autowired
作用:自動(dòng)按照類型注入。當(dāng)使用注解注入屬性時(shí),set 方法可以省略。它只能注入其他bean 類型。當(dāng)有多個(gè)類型匹配時(shí),使用要注入的對象變量名稱作為 bean 的 id,在 spring 容器查找,找到了也可以注入成功,找不到就報(bào)錯(cuò)。
@Qualifier
作用:在自動(dòng)按照類型注入的基礎(chǔ)之上,再按照 Bean 的 id 注入。它在給字段注入時(shí)不能獨(dú)立使用,必須和@Autowire 一起使用;但是給方法參數(shù)注入時(shí),可以獨(dú)立使用。
屬性:value:指定bean 的 id。
@Resource
作用:直接按照 Bean 的 id 注入。它也只能注入其他 bean 類型。
屬性:name:指定bean 的 id。
@Value
作用:注入基本數(shù)據(jù)類型和 String 類型數(shù)據(jù)的 。
屬性:value:用于指定值。
用于改變作用范圍的
相當(dāng)于:
<bean id="" class="" scope="">
@Scope
作用:指定 bean 的作用范圍。
屬性:value:指定范圍的值。取值:singleton(單例),prototypere(多例),quest(請求),session(當(dāng)前服務(wù)器的session域),globalsession(全局服務(wù)器的session域)
和生命周期相關(guān)的
相當(dāng)于:
<bean id=" " class=" " init-method=" " destroy-method="" />
@PostConstruct
作用:用于指定初始化方法。
@PreDestroy
作用:用于指定銷毀方法。
其它注解
@Configuration
作用:用于指定當(dāng)前類是一個(gè) spring 配置類,當(dāng)創(chuàng)建容器時(shí)會(huì)從該類上加載注解。獲取容器時(shí)需要使用AnnotationApplicationContext(有@Configuration 注解的類.class)。
屬性:value:用于指定配置類的字節(jié)碼
@ComponentScan
作用:用于指定 spring 在初始化容器時(shí)要掃描的包。作用和在spring 的 xml 配置文件中的:<context:component-scan base-package="com.xxx"/>是一樣的。
屬性:basePackages:用于指定要掃描的包。和該注解中的 value 屬性作用一樣。
@Bean
作用:該注解只能寫在方法上,表明使用此方法創(chuàng)建一個(gè)對象,并且放入 spring 容器。
屬性:name:給當(dāng)前@Bean注解方法創(chuàng)建的對象指定一個(gè)名稱(即 bean 的id)。
@PropertySource
作用:用于加載 .properties 文件中的配置。例如我們配置數(shù)據(jù)源時(shí),可以把連接數(shù)據(jù)庫的信息寫到properties 配置文件中,就可以使用此注解指定 properties 配置文件的位置。
屬性:value[]:用于指定properties 文件位置。如果是在類路徑下,需要寫上classpath:
@Import
作用:用于導(dǎo)入其他配置類,在引入其他配置類時(shí),可以不用再寫@Configuration 注解。當(dāng)然,寫上也沒問題。
屬性:value[]:用于指定其他配置類的字節(jié)碼。