1、@Resource和@Autowired依赖注入的区别是什么? @Qualifier使用场景是什么?

@Resource:可以根据名字(id)进行注入,如果找不到对应名字bean,那么就会根据类型进行注入。
@Resource = @Autowired + @Qualifier
@Autowired:根据类型自动注入,如果需要根据名字注入则还要添加@Qualifier注解配合一起使用。

2、Spring框架中都用到了哪些设计模式?

  1. 工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例
    2. 单例模式:Bean默认为单例模式
    3. 代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术
    4. 模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate
    5. 观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现—ApplicationListener

3、Spring的常用注解

  1. @Component(任何层) @Controller @Service @Repository(dao): 用于实例化对象
    2. @Scope : 设置Spring对象的作用域
    3. @PostConstruct @PreDestroy : 用于设置Spring创建对象在对象创建之后和销毁之前要执行的方法
    4. @Value: 简单属性的依赖注入
    5. @Autowired: 对象属性的依赖注入
    6. @Qualifier: 要和@Autowired联合使用,代表在按照类型匹配的基础上,再按照名称匹配。
    7. @Resource 按照属性名称依赖注入
    8. @ComponentScan: 组件扫描
    9. @Bean: 表在方法上,用于将方法的返回值对象放入容器
    10. @PropertySource: 用于引入其它的properties配置文件
    11. @Import: 在一个配置类中导入其它配置类的内容
    12. @Configuration: 被此注解标注的类,会被Spring认为是配置类。Spring在启动的时候会自动扫描并加载所有配置类,然后将配置 类中bean放入容器
    13. @Transactional 此注解可以标在类上,也可以表在方法上,表示当前类中的方法具有事务管理功能。