栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

Spring5框架基础详解(二) IOC容器Bean管理XML方式(XML注入集合属性、工厂Bean、Bean的作用域、Bean的生命周期、xml自动装配、外部属性文件)

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring5框架基础详解(二) IOC容器Bean管理XML方式(XML注入集合属性、工厂Bean、Bean的作用域、Bean的生命周期、xml自动装配、外部属性文件)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 一、 IOC操作 Bean管理(XML注入集合属性)
  • 二、 IOC操作 Bean管理(工厂Bean)
  • 三、 IOC操作 Bean管理(Bean的作用域)//面试重点//
  • 四.IOC操作Bean管理(Bean的生命周期)
    • 4.1不加后置处理器:五步的Bean生命周期
    • 4.2加后置处理器:bean生命周期有七步
  • 五.IOC操作Bean管理(xml自动装配)
  • 六.IOC操作Bean管理(外部属性文件)
  • 总结


一、 IOC操作 Bean管理(XML注入集合属性)
	1.注入数组类型属性:
	2.注入List集合属性:
	3.注入Map集合属性:
	4.注入set集合属性: 
			*步骤1:  创建类,定义数组,list,map,set类型属性,生成对应set方法
package cn.hncj.collectiontype;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;


public class Stu {
    //1.数组类型属性
    private String[] courses;
    //2.List集合类型属性;
    private List list;
    //3.Map集合类型属性;
    private Map maps;
    //4.set集合类型属性;
    private Set sets;

    public void setCourses(String[] courses) {
        this.courses = courses;
    }

    public void setList(List list) {
        this.list = list;
    }

    public void setMaps(Map maps) {
        this.maps = maps;
    }

    public void setSets(Set sets) {
        this.sets = sets;
    }
    public void test(){
        System.out.println(Arrays.toString(courses));
        System.out.println(list);
        System.out.println(maps);
        System.out.println(sets);
    }
}

//测试类
public class Demo {
    @Test
    public void test() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        var stu = ctx.getBean("stu", Stu.class);
        stu.test();
    }
}
			*步骤2:在spring配置文件中进行配置
  
    
        
        
            
                java课程
                数据库课程
            
        
        
        
            
                张三
                法外狂徒
            
        
        
        
            
                
                
            
        
        
        
            
                MySQL
                Redis
            
        
    

二、 IOC操作 Bean管理(工厂Bean)

两种Bean(普通Bean和工厂Bean)

普通Bean:在spring的配置文件中,定义的bean类型就是返回类型。
工厂Bean:在配置文件中定义bean类型可以和返回的类型不一样。(工厂bean是spring中内置的bean类型)

步骤1.创建类,让这个类作为工厂bean,实现接口FactoryBean
步骤2.实现接口里的方法,在实现的方法中定义返回的bean类型。 
public class MyBean implements FactoryBean {
    //定义返回bean
    @Override
    public Course getObject() throws Exception {
        Course course=new Course();
        course.setCname("abc");
        return course;
    }

    @Override
    public Class getObjectType() {
        return null;
    }

    @Override
    public boolean isSingleton() {
        return FactoryBean.super.isSingleton();
    }
}




public class Course {
    private String  Cname;

    public void setCname(String cname) {
        Cname = cname;
    }

    @Override
    public String toString() {
        return "Course{" +
                "Cname='" + Cname + ''' +
                '}';
    }
}



//测试类
public class Demo {
    @Test
    public void test() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        Course course = ctx.getBean("mybean", Course.class);
        System.out.println(course);
    }
}

  
    
    

三、 IOC操作 Bean管理(Bean的作用域)//面试重点//

bean作用域:在spring里,可以设置bean实例的单例模式还是多例模式,在默认情况下,bean是单实例对象。

bean标签里面有属性(scope)用于设置单实例还是多实例。
		*singleton 表示单实例:设置scope值是singleton时候,加载spring配置文件时候就会创建单实例对象。
		*prototype 表示多实例:设置scope值是prototype时候,不是在加载spring配置文件时候创建对象,是在调用getBean方法时创建多例对象。
		*request:表示一次请求。
		*session:表示一次会话。
四.IOC操作Bean管理(Bean的生命周期) 4.1不加后置处理器:五步的Bean生命周期
生命周期:
		*1.从对象创建到对象销毁的过程
bean生命周期:
		*1.通过构造器创建bean实例(无参数构造)		
		*2. 为bean的属性设置值和对其他bean引用(调用set方法)
		*3.调用bean的初始化方法(需要进行配置初始化方法)
		*4.bean可以使用(对象获取到了)
		*5.当容器关闭的时候,调用bean的销毁的方法(需要进行配置销毁的方法)
public class Orders {
    public Orders(){
        System.out.println("第一步:执行无参数构造创建bean实例");
    }
    private String oname;
    public void setOname(String oname) {
        this.oname = oname;
        System.out.println("第二步:调用set方法设置属性值");
    }
    //创建执行的初始化的方法
    public void initMethod(){
        System.out.println("第三步: 执行初始化的方法");
    }
    //创建执行的销毁的方法
    public void destroyMethod(){
        System.out.println("第五步:执行销毁的方法");
    }
}


//测试类
public class Demo {
    @Test
    public void test() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        Orders orders = ctx.getBean("orders", Orders.class);
        System.out.println("第四步:获取创建bean实例对象");
        //手动让bean实例销毁
        ((ClassPathXmlApplicationContext)ctx).close();
    }
}
  
        
    

4.2加后置处理器:bean生命周期有七步
		*1.通过构造器创建bean实例(无参数构造)		
		*2. 为bean的属性设置值和对其他bean引用(调用set方法)
		*3.把bean实例传递bean后置处理器的方法postProcessBeforeInitialization
		*4.调用bean的初始化方法(需要进行配置初始化方法)
		*5.把bean实例传递bean后置处理器的方法postProcessAfterInitialization
		*6.bean可以使用(对象获取到了)
		*7.当容器关闭的时候,调用bean的销毁的方法(需要进行配置销毁的方法)
				*演示添加后置处理器效果
				(1) 创建类,实现接口BeanPostProcessor,创建后置处理器。
public class MyBeanPost implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("在初始化之前执行的方法");
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("在初始化之后执行的方法");
        return bean;
    }
}






public class Orders {
    public Orders(){
        System.out.println("第一步:执行无参数构造创建bean实例");
    }
    private String oname;
    public void setOname(String oname) {
        this.oname = oname;
        System.out.println("第二步:调用set方法设置属性值");
    }
    //创建执行的初始化的方法
    public void initMethod(){
        System.out.println("第三步: 执行初始化的方法");
    }
    //创建执行的销毁的方法
    public void destroyMethod(){
        System.out.println("第五步:执行销毁的方法");
    }
}


//测试类
public class Demo {
    @Test
    public void test() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        Orders orders = ctx.getBean("orders", Orders.class);
        System.out.println("第四步:获取创建bean实例对象");
        //手动让bean实例销毁
        ((ClassPathXmlApplicationContext)ctx).close();
    }
}

        
    
    
    
五.IOC操作Bean管理(xml自动装配)

自动装配:根据指定装配规则(属性名称或者属性类型),Spring自动将匹配的属性值进行注入

public class Dept {
}




public class Emp {
    private Dept dept;

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "dept=" + dept +
                '}';
    }

    public void test(){
        System.out.println(dept);
    }
}



public class Demo {
    @Test
    public void test() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        Emp emp = ctx.getBean("emp", Emp.class);
        System.out.println(emp);
    }
}
 
    
    
    
    
六.IOC操作Bean管理(外部属性文件)
第一种:直接配置数据库信息(不常用)
			*1.配置druid连接池
			


    
    
    
    

			*2.引入druid连接池maven依赖
		 
        	com.alibaba
        	druid
        	1.2.8
    	
第二种:引入外部属性文件配置数据库连接池(常用)
		*1.创建外部属性文件,jdbc.properties格式文件,写数据库信息
					jdbc.driverClass=com.mysql.jdbc.Driver
					jdbc.url=jdbc:mysql://localhost:3306/db
					jdbc.username=root
					jdbc.password=
		
		*2.把外部properties属性文件引入到spring配置文件中 
			*引入context名称空间

*引入context名称空间之前的xml头信息:

		 	

引入context名称空间之后的xml头信息:


	*3.在spring配置文件使用标签引入外部属性文件
 
 
 
        
        
        
        
        
        

总结

Spring如同一个工厂,用于生产和管理Spring容器中的Bean。要使用这和工厂,需要开发者对Spring的配置文件进行配置。
IOC容器Bean管理XML方式:XML注入集合属性、工厂Bean、Bean的作用域、Bean的生命周期、xml自动装配、外部属性文件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983876.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号