zoukankan      html  css  js  c++  java
  • spring相关

    1、spring优势

    1)轻量级

    2)模块化

    3)spring-web框架

    4)特定的异常捕获

    5)IOC、AOP

    6)事务管理

    2、DI依赖注入:把许多需要的类合在一起,但又保证各自的独立性;注入的两种方式:构造器注入、setter注入

    3、AOP

    4、Core Container

    1)IOC、AOP框架的基本部分

    2)Bean提供BeanFactory

    3)Context提供配置文件访问对象

    4)SpEL 语法

    5、 注解

    1)@Repository 数据访问层

    2)@Component 表示一个组件

    3)@Service  业务层

    4)@Constroller  控制层

    5)@PostConstruct 和 @PreDestroy  初始化和销毁的 

    6)@autowire

          a)no -- 显式指定不使用自动装配

          b)byName

          c)byType

          d)constructor

          e)autodetect 有默认构造器则byType否则constructor

    7)@Qualifier("ppp") 提供一个 String 类型的值作为候选的 Bean 的名字;至可以作用于方法的参数

    8)@Resource JDK自带,默认byName

    6、spring的controller是单例还是多例,怎么保证并发的安全?

    默认是单例。

    保证:

    1)不要在controller中定义成员变量。

    2)万一必须要定义一个非静态成员变量时候,则通过注解@Scope("prototype"),将其设置为多例模式。

    7、Spring的beanFactory和factoryBean的区别(参考https://www.cnblogs.com/redcool/p/6413461.html

    1)beanFactory:用于管理Bean的一个工厂,职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

    Resource resource = new FileSystemResource("beans.xml");
    BeanFactory factory = new XmlBeanFactory(resource);
    Person p = factory.getBean("person");//getType("")、isSingleton("")...

    2)factoryBean:接口

    public interface FactoryBean<T> {
        T getObject() throws Exception;
    
        Class<?> getObjectType();
    
        boolean isSingleton();
    }

    8、spring bean 生命周期

    1)Bean的作用域可以通过Bean标签的scope属性进行设置,Bean的作用域包括:
    默认情况下scope="singleton",那么该Bean是单例,任何人获取该Bean实例的都为同一个实例;
    scope="prototype",任何一个实例都是新的实例;
    scope="request",在WEB应用程序中,每一个实例的作用域都为request范围;
    scope="session",在WEB应用程序中,每一个实例的作用域都为session范围;

    注意:在默认情况下,Bean实例在被Spring容器初始化的时候,就会被实例化,默认调用无参数的构造方法。在其它情况下,Bean将会在获取实例的时候才会被实例化。

    2)Bean可以通过指定属性init-method指定初始化后执行的方法,以及通过指定属性destroy-method销毁时执行的方法。

    语法:<bean ....   destroy-method="销毁时调用的方法名" init-method="初始化后执行的方法名"/>

    9、spring 循环注入的原理

    有一个类A,A有一个构造器里面的参数是类B,然后类B里面有个构造器参数是类C,类C里面有个构造器参数是类A,就是我们会发现其实引用循环了A 里面有B的引用,B里面有C的引用,C里面又有A的引用。

    10、Timer与Quartz的区别有三点:

    1.出身不同:Timer由jdk直接提供,调用方式简单粗暴,不需要其它jar包支持。Quartz并非jdk自带,需要引入相应的jar包

    2.能力区别:主要体现在对时间的控制上。某个具体时间执行具什么任务的话Timer可以轻松搞定,而比如每个星期天早上八点提醒做某事的功能就需要Quartz,因此Quartz对时间的控制远比Timer强大,完善

    3.底层机制:

  • 相关阅读:
    VB.NET程序设计笔记
    ASP.NET动态的网页增删查改
    一般处理程序加简单三层实现增删查改(2)
    一般处理程序加简单三层实现增删查改(1)
    设计模式六大原则(1):单一职责原则
    Android Https相关完全解析 当OkHttp遇到Https
    Androrid应用打包release版时关闭log日志输出
    Fragment结合ViewPager之懒加载
    多线程基础
    Android Studio wifi调试
  • 原文地址:https://www.cnblogs.com/beaconSky/p/8052824.html
Copyright © 2011-2022 走看看