1. 用于把当前类对象存入spring容器中
@Component
value:指定bean的id,默认是当前类名的首字母改小写
以下三个与@Component是一样的,区别在于
@Controller用于表现层
@Repository用于持久层
@Service用于业务层
2.用于注入数据
@Autowired
自动按照类型注入。
只要容器中有唯一一个bean对象类型和要注入的变量类型匹配,就注入成功。
ioc容器中没有任何bean类型和要注入的类型匹配,就报错。
ioc容器中有多个bean类型和要注入的类型匹配,就找名字一样的。
可以用在在变量,方法上,注解注入时,set方法不是必须了。
@Qualifier与@Autowired一起使用,避免了ioc容器中有多个bean类型和要注入的类型匹配,不知道找谁匹配。
属性value,用于指定beanid。
@Resource
直接按照bean的id注入,可以独立使用。
属性name用于指定bean的id。
以上注入只能注入其实bean类型,而基本数据类型使用@Value注解,属性value指定数据的值。可以使用spring中。SpEl(即spring的el表达式)写法,${表达式}。集合表达式的注入只能通过xml来实现。
3.改变作用范围
@Scope用于指定bean的作用范围。
属性value指定范围的值,值可以取singleton单例,prototype多例。
4.生命周期相关
@PreDestroy
用于指定销毁方法(是多例的时候不会执行该方法,Java垃圾回收,在一段时间没有被调用后会自动回收)
@PostConstruct
用于初始化方法