一、@Resource和@Autowired依赖注入的区别是什么? @Qualifier使用场景是什么?(了解)

@Resource
只能放在属性上,表示先按照属性名匹配IOC容器中对象id给属性注入值若没有成功,会继续根据当前属性的类型匹配IOC容器中同类型对象来注入值,先按照name进行匹配
若指定了name属性@Resource(name = “对象id”),则只能按照对象id注入值。
@Autowird
放在属性上:表示先按照类型给属性注入值如果IOC容器中存在多个与属性同类型的对象,则会按照属性名注入值,先按照类型匹配
也可以配合@Qualifier(“IOC容器中对象id”)注解直接按照名称注入值。
放在方法上:表示自动执行当前方法,如果方法有参数,会自动从IOC容器中寻找同类型的对象给参数传值
也可以在参数上添加@Qualifier(“IOC容器中对象id”)注解按照名称寻找对象给参数传值。
@Qualifier使用场景:
@Qualifier(“IOC容器中对象id”)可以配合@Autowird一起使用, 表示根据指定的id在Spring容器中匹配对象

二、Spring框架中都用到了哪些设计模式?(必会)

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

三、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 此注解可以标在类上,也可以表在方法上,表示当前类中的方法具有事务管理功能。