java面试题整理( 四 )

  • 自动装配建议少用 , 如果要使用 , 建议使用ByName
  • 六十.@Required
    @Required 注释应用于 bean 属性的 setter 方法 , 它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中 , 否则容器就会抛出一个 BeanInitializationException 异常 。
    六十一.autowired和resource?
    1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上 。
    2.@Autowired默认按类型装配(这个注解是属业spring的) , 默认情况下必须要求依赖对象必须存在 , 如果要允许null值 , 可以设置它的required属性为false , 如:@Autowired(required=false), 如果我们想使用名称装配可以结合@Qualifier注解进行使用
    六十二.构造方法注入和设值注入有什么区别?
    1. 设值注入写法直观便于理解 , 使各种关系清晰明了 。
    2. 设值注入可以避免因复杂的依赖实例化时所造成的性能问题 。
    3. 设值注入的灵活性较强 。
    4. 构造方法注入可以决定依赖关系的注入顺序 , 有限依赖的优先注入 。
    5. 对于依赖关系无需变化的Bean , 构造方法注入使所有的依赖关系全部在构造器内设定 , 可避免后续代码对依赖关系的破坏 。
    6. 构造方法注入中只有组建的创建者才能改变组建的依赖关系 , 更符合高内聚原则 。
    六十三.Spring 框架中有哪些不同类型的事件?
    上下文更新事件(ContextRefreshedEvent):该事件会在ApplicationContext被初始化或者更新时发布 。 也可以在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发 。
    上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件 。
    上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件 。
    上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件 。 容器被关闭时 , 其管理的所有单例Bean都被销毁 。
    请求处理事件(RequestHandledEvent):在Web应用中 , 当一个http请求(request)结束触发该事件 。 六十四.FileSystemResource 和 ClassPathResource 有何区别?
    ClassPathResource在环境变量中读取配置文件 , FileSystemResource在配置文件中读取配置文件 。
    六十五.Spring 框架中都用到了哪些设计模式?
    单例模式、工厂模式、模板方法、代理模式、观察者模式...
    六十六.设计模式应用场景
    组合模式:针对树形结构