注解:
1)用于创建对象的注解@Commponet
相当于
下面三个注解都是针对@Commponet的衍生注解,他们的作用及属性都是一模一样的。
他们只不过是提供了更加明确的语义化。
a)@Controller:一般用于表现层的注解。
b)@Service:一般用于业务层的注解。
C)@Repository:一般用于持久层的注解。
2)用于注入数据的
相当于:
a) @Autowired
作用:
自动按照类型注入。当使用注解注入属性时,set方法可以省略。它只能注入其他bean类型。当有多个类型匹配时,使用要注入的对象变量名称作为bean的id,在spring容
器查找,找到了也可以注入成功。找不到就报错。
b)Qualifer
作用:
在自动按照类型注入的基础之上,再按照Bean的id注入。它在给字段注入时不能独立使用,必须和@Autowired一起使用;但是给方法参数注入时,可以独立使用。
属性:
value:指定bean的id。
c)@Resource
作用:
直接按照Bean的id注入。它也只能注入其他bean类型。
属性:
name:指定bean的id。
d)@Value
作用:
注入基本数据类型和String类型数据的
属性:
value:用于指定值
3)用于改变作用域范围的
a)@Scope
作用:
指定bean的作用范围。
属性:
value:指定范围的值。
取值:singleton prototype request session globalsession
4)和生命周期相关的
相当于:
a)@PostConstruct注解
@PostConstruct加在方法上,指定bean对象创建好之后,调用该方法初始化对象,类似于xml的init-method方法
@PostConstruct
public void init(){
System.out.println("调用了init方法");
}
b)@PreDestory注解
@PreDestory加在方法上,指定bean销毁之前,调用该方法,类似于xml的destory-method方法
@PreDestroy
public void destory(){
System.out.println("调用了destory方法");
}
注意:要看到@PreDestory的效果,需要调用ClassPathXmlApplicationContext.close方法,同时scope的值要是singleton
Final:XML和注解的比较
注解的优势:
配置简单,维护方便。(我们找到了类,就相当于找到了配置)
XML的优势:
修改时,不用改源码。不涉及重新编译和部署。
原文:https://www.cnblogs.com/shy-duke/p/13966509.html