Spring 基于xml 的 IOC 配置,

1. 通过maven 下载相关依赖需要的jar 包

Spring 基于xml 的 IOC 配置,_第1张图片


    jar
    
    
        
            
            org.springframework
            spring-context
            5.0.2.RELEASE
        
        
            
            commons-dbutils
            commons-dbutils
            1.4
        
        
            
            c3p0
            c3p0
            0.9.1.2
        
        
            
            mysql
            mysql-connector-java
            5.1.6
        
        
            
            junit
            junit
            4.10
        
    

2.创建实体类
Spring 基于xml 的 IOC 配置,_第2张图片3.写出业务逻辑层和数据访问层的接口,以及实现类。实现类中加入固定的IOC封装属性
Spring 基于xml 的 IOC 配置,_第3张图片
Spring 基于xml 的 IOC 配置,_第4张图片增删改的实现方法:
Spring 基于xml 的 IOC 配置,_第5张图片
实现类中的具体注意代码:

//数据访问实现类具体
    //spring 提供进行封装赋值的属性和方法
    private QueryRunner runner;

    public void setRunner(QueryRunner runner) {
        this.runner = runner;
    }
    //spring 提供进行封装赋值的属性和方法---结束
    
     //业务逻辑实现类具体
    //spring 提供进行封装赋值的属性和方法
    private IStudentDao studentDao;
    public void setStudentDao(IStudentDao studentDao) {
        this.studentDao = studentDao;
    }
    //spring 提供进行封装赋值的属性和方法---结束

4.配置IOC 容器中的具体属性。也就是配置:applicationContext.xml
Spring 基于xml 的 IOC 配置,_第6张图片知识拓展:scope=“prototype”
Spring 基于xml 的 IOC 配置,_第7张图片

        
        
            
            
        

        
        
            
            
        

        
        
            
            
        

            
        
                
            
            
            
            
        

5.单元测试类
Spring 基于xml 的 IOC 配置,_第8张图片

@Test
    public void testquery(){
        //1.获取spring IOC容器
        ApplicationContext ac =
          new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.得到业务层对象
        IStudentService ss = ac.getBean("studentService",IStudentService.class);
        //3.执行方法
        List students = ss.query();
        for (Student student : students) {
            System.out.println(student);
        }
    }

day31 2019-08-30 笔记重点:

三、耦合和解耦
1. 什么是耦合
	模块之间的关联程度, 依赖程度
2. 什么是解耦
	降低模块之间的耦合度(依赖关系)
3. 解耦的目的
	编译器不依赖,运行期才依赖
4. 解耦思路
	1) 把全限类名都放到配置文件中
	2)  通过工厂帮助创建对象

七、IOC的细节

1、容器对象的类结构图
a、beanFactory 是spring容器的顶层接口
b、接口ApplicationContext是 beanFactory子接口
	实现类:ClassPathXmlApplicationContext  -- 从类路径之下读取配置文件 (常用)
				 FileSystemXmlApplicationContext - 从绝对路径指定的配置文件读取
				 AnnotationConfigApplicationContext -- 纯注解配置使用的类 (常用)

2、getBean方法(掌握)

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //根据名称获取该对象
//        Object userDao = ac.getBean("userDao");
//        System.out.println(userDao);
//        根据类型获取该对象
//        如果该类型有两个实现类,会执行异常
//        UserDao userDao = ac.getBean(UserDao.class);
//        System.out.println(userDao);
//        得到是id为userDao1的对象,类型为UserDao接口的实现类
        UserDao userDao = ac.getBean("userDao2", UserDao.class);
        System.out.println(userDao);

3、bean对象的范围和生命周期(掌握)

springIOC容器默认的单例模式:  单例模式的对象在创建容器时创建,销毁容器时销毁
scope:prototype 原型模式(多例模式):获取时创建,当对象长时间不在被引用, 则被垃圾回收机制回收
scope:singleton :单例模式
scope :request:  请求范围
scope: session : 回话范围
scope:global session :全局范围 -- spring 5的新特性中被删除了
UserDao userDao1 = ac.getBean("userDao", UserDao.class);
System.out.println(userDao1);

UserDao userDao2 = ac.getBean("userDao", UserDao.class);
System.out.println(userDao2);

6、构造方法注入(掌握)

	value 属性只能赋值简单的类型:基本数据类型和String类型
    ref:  pojo类型,复杂类型, 关联创建好的对象


    
    
    
    
    
    
    
    
    
		
    



7、set方法注入属性(常用)(掌握)


    
    
    
    
    

8、p名称空间注入:基于set方法注入--- 了解
    a、在头部文件中引入p名称空间
	b、使用p名称空间注入属性
    

9、注入集合属性(掌握)


    
    
        
            javaSE
            javaEE
            javaME
        
    

    
        
            javaSE
            javaEE
            javaME
        
    
    
        
            javaSE
            javaEE
            javaME
        
    
    
    
    
       
        five
        six
        seven
    
    

    
        
            
            
            
            
            
        
    

你可能感兴趣的:(Spring 基于xml 的 IOC 配置,)