注:如果注解只有一个属性时,value可以不写,直接在括号里面写值
Component、Controller、Service、Repository
:这四个注解的作用是创建bean,将产生的对象存入到spring容器中
Autowired、Qualifiler、Resource
是给变量赋值的,且是其他类型的bean对象
@Component(value="")
创建对象的注解,把当前对象存入spring容器中,有一个value属性,默认是类名称,首字母小写
@Controller(value="") 一般用于表现层
@Service(value="") 一般用于业务层
@Repository(value="") 一般用于持久层
这三个注解和Component注解作用相同,都是用于创建对象,将对象存入spring容器。这三个注解是spring框架为我们提供明确的三层注解,是我们的三层架构更加清晰
@Autowried
按照类型进行注入
只要容器中有唯一的一个bean对象和要注入的变量类型匹配就可以注入成功,然后将匹配到的bean对象复制给这个变量。如果ioc容器中没有任何bean的类型和注入变量的类型匹配,就会报错。
出现位置:可以是变量上也可以是方法上,下图中的key即为注解的value值
如果容器中有多个bean对象和注入类型匹配,会线根据类型去圈定范围,然后根据变量名称去匹配value的值,即下图中的key。
@Qualifier(value="")
作用:按照类型进行注入的基础之上再按照名称进行注入
在给类成员注入时不能单独使用,但是给方法参数注入时可以单独使用。
注:给类成员注入时,必须和Autowired组合一起使用
给方法参数注入时,有多个是实例化对象时。
@Resource(name="")
作用:直接按照bean的id进行注入
属性值使用name=""用于指定bean的id
Autowire、Qualifier、Resource都只能注入其他bean类型的数据,基本数据类型和String类型无法通过上述注解实现。集合类型的注入只能通过xml的方式来实现
@Value(value="")
作用:注入基本数据类型和String类型,可以使用sprin的el表达式("${}")
属性:value=""指定数据的值
@Scope(value="")
作用:指定bean的作用范围,不写默认是单例的
属性:指定取值范围,value="",singleton(单例),prototype(多例)
@PreDestory
作用:用于指定初始化方法
@PostConstruct
作用:用于指定销毁方法,多例对象无法销毁