美文网首页
Spring与IoC

Spring与IoC

作者: 神的孩子都该跳舞 | 来源:发表于2017-08-04 09:38 被阅读0次

    控制反转将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。
    控制反转是一个概念,一种思想,依赖注入方式更为广泛,依赖注入是一种实现方式,程序代码不做定位查询,这些工作由容器自行完成。
    下载框架的网站
    http://repo.spring.io/simple/libs-release-local/org/springframework/spring/
    导入jar包
    https://mvnrepository.com/ 此网站可以查找对应jar包下载
    com.springsource.org.apache.commons.logging-1.1.1
    com.springsource.org.apache.log4j-1.2.15
    junit-4.9
    spring-beans-4.2.1.RELEASE
    spring-context-4.2.1.Release
    spring-core-4.2.1.RELEASE
    spring-expression-4.2.1.RELEASE
    在eclipse中新建工程,在primary中新建folder,取名lib导入这些包,接着buildpath一下
    ????? 接口 对象 =new 实现类
    使用spring需要创建配置文件 applicationContext 应用上下关系,有了xml就需要约束
    复制 http://www.springframework.org/schema/beans/spring-beans.xsd
    添加提示:window->preferences->查找xml->xml Catalog->User specifiled Entries
    ->add->引入schema\beans\spring-beans-4.2.xsd
    配置好文件,然后容器自己创建
    @Test
    public void test02() {
    // 加载Spring配置文件,创建Spring容器对象
    // 这里的配置文件存放在类路径src下
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    // 从容器中获取指定的bean对象
    ISomeService service = (ISomeService) ac.getBean("someService");
    service.doFirst();
    service.doSecond();
    }

    发现测试成功,抛出问题,那是什么时候开始创建的呢?在实现类中添加无参构造器,右键source选择Generate Constructors from Superclass创建,然后使用debug文件测试,发现在创建spring容器的时候就已经执行,容器初始化所有对象全部创建好,创建好之后获取即可。

    @Test
    public void test04() {
    // 这个容器中的对象不是在容器初始化时创建的,而是在真正使用时才创建
    BeanFactory bf = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
    // 从容器中获取指定的bean对象
    ISomeService service = (ISomeService) bf.getBean("someService");
    service.doFirst();
    service.doSecond();
    }

    两种方法对比,applicationContext容器的效率快,但是占内存。bean工厂不占内存,但是效率较慢,在现阶段考虑web应用的速度响应问题,优先考虑前者。

    相关文章

      网友评论

          本文标题:Spring与IoC

          本文链接:https://www.haomeiwen.com/subject/dljplxtx.html