1. 程式人生 > >Spring框架註解

Spring框架註解

ron 引入 anti defined source gist ons xml配置 pri

  學習Spring的過程發現註解實在是太多太多了,有些來自於JSR,有些是Spring,有些只是語義上不同,有些是組合註解。

  這裏做一個總結,懵逼的時候回來看。

1、標記註解

@Configuration

定義:標記該類作為一個特殊配置類,可以理解為xml文件中的<beans></beans>。與@Bean配合使用,可以讓同一個類的內部,實例化方法實現互相依賴。

英文原版:@Configuration classes allow inter-bean dependencies to be defined by simply calling other @Bean

methods in the same class.

@ComponentScan

定義:與@Configuration配合使用,默認將此類的包作為根,自動掃描目錄下所有註解,可以理解為<context:component-scan/>

Tip:The use of <context:component-scan> implicitly enables the functionality of <context:annotation-config>. There is usually no need to include the<context:annotation-config>

element when using <context:component-scan>.

英文原版:To autodetect these classes and register the corresponding beans, you need to add @ComponentScan to your @Configuration class

@EnableAutoConfiguration

定義:讓SpringBoot根據引入的jar包,決定用對應方式來進行初始化操作

英文原版:This annotation tells Spring Boot to “guess” how you will want to configure Spring, based on the jar dependencies that you have added.

2、類實例註解

@Component

定義:註明該類會被Spring管理,屬於一般性註解

英文原版:@Component is a generic stereotype for any Spring-managed component.

@Service、@Controller、@Repository

定義:與@Component作用相同,區別在於語義化

英文原版:@Repository, @Service, and @Controller are specializations of @Component for more specific use cases

3、方法註解

@Bean

定義:該註解作用於一個方法,方法必須實例化一個類並交給IOC容器管理,功能類似於xml配置文件中的<bean/>

英文原版:The @Bean annotation is used to indicate that a method instantiates, configures and initializes a new object to be managed by the Spring IoC container.

@value

定義:用於對類中實例變量進行初始化賦值

4、依賴註解

@Resource

定義:來源於JSR250,默認通過name註入,失敗退化為type

@Inject

定義:來源於JSR330,默認通過type註入,失敗退化為name

@Autowired

定義:Spring自定義註解,功能類似於@inject

5、組合註解

@SpringBootApplication

定義:該註解等價於@Configuration、@EnableAutoConfiguration、@ComponentScan三個註解的組合

英文原版:The @SpringBootApplication annotation is equivalent to using @Configuration, @EnableAutoConfiguration and @ComponentScan with their default attributes.

@RestController

定義:該註解等價於@ResponseBody、@Controller的組合

Spring框架註解