zoukankan      html  css  js  c++  java
  • SpringIOC学习二

    Spring的IOC容器通过依赖注入DI(dependency injection)来实现程序之间的依赖关系,达到解耦的方式

    依赖的方式:
    a.基于xml文件配置的注入
        * 构造函数注入
        * setter方法注入
        * 特定接口的注入(用的很少,省略)
        
    a1:常见pojo类属性的注入

    a2:bean的scope属性代表bean对象的作用域 scope = "singleton/prototype"
        singleton : 单例,仅初始化一次,创建一个实例 A a = new A();
        prototype : 每一次对bean的访问都重新创建一个实例 A a = new A(); A b = new A();
        
    a3:bean的延迟加载
        * 在bean标签里面写入lazy-init = "false" / lazy-init = "true"
        * 也可以在beans的头文件里面写入 default-lazy-init="true" 代表整个配置文件的对象都是延迟加载

    a4:spring可以自动的向bean中注入依赖 -- 自动装配(autowire)    
        自动装配的两种方式:
        * byName 定义的依赖的bean名称需要与类中引用的名称一致,就会匹配依赖关系
        * byType 通过定义的依赖bean的类型来匹配(默认autowire-candidate="true",有多个实现类的时候要设置其余的为false)
        详见代码 autowire.*
        总结:建议不要在配置文件里面用自动装配,虽然可以减少配置文件,但是不利于维护

    配置文件的读取:
        
            //第一种方式 ,单个配置文件的加载
            /*ApplicationContext ac =
                    new ClassPathXmlApplicationContext("applicationContext.xml");
            UserSetterService userSetterService =
                        (UserSetterService) ac.getBean("userSetterService");
            System.out.println(userSetterService);*/
            
            //第二种方式 多个文件文件的加载
            /*ApplicationContext ac =
                    new ClassPathXmlApplicationContext("applicationContext.xml",
                                "applicationContext-property.xml",
                                "applicationContext-autowire.xml");*/
            /*String[] configFiles = new  String[]{"applicationContext.xml",
                    "applicationContext-property.xml",
                    "applicationContext-autowire.xml"};
            ApplicationContext ac =
                    new ClassPathXmlApplicationContext(configFiles);*/
            
            //第三种方式: 用约定的方式
            /*ApplicationContext ac =
                             new ClassPathXmlApplicationContext("applicationContext*.xml");
            */
            
            
            //第四种方式:读取一个总的配置文件 ,其他配置都被包含在这一个总得配置文件里面
            /*ApplicationContext ac =
                    new ClassPathXmlApplicationContext("application-all.xml");
        */
        
            //第五种方式:BeanFactory
            ApplicationContext ac =
                    new FileSystemXmlApplicationContext("D:\Eclipse_WorkSpace\spring02-IOC-DI\src\applicationContext.xml");
            
            
            UserSetterService userSetterService =
                    (UserSetterService) ac.getBean("userSetterService");
            System.out.println(userSetterService);
        
        
        
        
        
        
        
        
        
        
       

  • 相关阅读:
    Codeforces Round #276 (Div. 1) D. Kindergarten dp
    Codeforces Round #221 (Div. 1) B. Maximum Submatrix 2 dp排序
    hihoCoder Challenge 27 #1469 : 福字 dp
    Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈
    Python id() 函数
    Python divmod() 函数
    Python any() 函数
    Python next() 函数
    Python slice() 函数
    Python3 hex() 函数
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7623149.html
Copyright © 2011-2022 走看看