一、用于创建对象的
以下四个注解可以用在任何地方,但是一般按照约定使用
@Controller
一般用于表现层
@Service
一般用于业务层
@Repository
一般用于持久层
@Component
一般用于除以上三个注解的其他地方
二、用于注入数据的
@Autowired
默认按照类型进行注入,如果有多个类型匹配,会使用变量名按照名称进行查找
@Qualifier
按照类型注入的基础之上,再按照名称给方法参数进行注入,给方法参数注入时可单独使用
@Autowired
@Qualifier
按照类型注入的基础之上,再按照名称给字段进行注入,给字段注入时必须配合@Autowired使用
@Resource
按照名称进行注入
@Value
注入基本数据类型和 String 类型数据的属性
三、用于改变作用范围的
@Scope
指定 bean 的作用范围
四、生命周期相关的
@PostConstruct
被此注解注释的方法,会在构造方法之后执行
@PreDestroy
五、其他注解
@Configuration
用于指定当前类是一个 spring 配置类, 当创建容器时会从该类上加载注解
@ComponentScan
用于指定 spring 在初始化容器时要扫描的包
@Bean
该注解只能写在方法上,表明使用此方法创建一个对象,并且放入 spring 容器。
我们自己创建的类可以用@Component@Controller@Service @Repository,但是如果我们使用了别人的jar包就没办法在别人的类上就这些注解创建对象了,这时可以使用@Bean来配置从外部引入的类对象
@PropertySource
用于加载.properties 文件中的配置
@Import
用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration 注解。