zoukankan      html  css  js  c++  java
  • 02-spring学习-配置bean

    在spring的IOC容器中配置Bean

    一,在xml中通过bean节点来配置bean:

    class:bean的类名,通过反射的方式在IOC容器中创建Bean,所以要求bean中必须有无参的构造器
    id:标识容器中的bean,id唯一

    在IOC容器读取bean配置创建Bean实例之前,必须对他进行初始化,只有实例化之后,才可以从IOC容器获取bean实例并使用。

    spring提高了两种类型的IOC实现。

    applicationContext主要实现类:

    applicationContext在初始化上下文的shi'h就实例化所有单例的bean。

    从IOC容器获取bean的方式:

    //利用ID定位到IOC容器的bean
     HelloWord helloword=(HelloWord) ctx.getBean("helloWord");//getBean里面的参数是配置的bean的ID
     //利用类型返回IOC容器中的bean,但要求该容器中只能有一种该类型的bean
     HelloWord helloword2=(HelloWord) ctx.getBean(HelloWord.class);//getBean里面的参数是配置的bean的ID

    spring依赖注入的三种方式:

    1,属性注入

    2,构造器注入,

    3,工厂方法注入(很少使用,不推荐)

    第二种方法:

    例子:

    创建一个car类:下面有两个重载的构造方法。

    package com.spring.beans;
    
    public class Car {
    
        private String brand;
        private String crop;
        private int price;
        private double maxSpeed;
        
        public Car(String brand, String crop, int price) {
            super();
            this.brand = brand;
            this.crop = crop;
            this.price = price;
        }
        
        public Car(String brand, String crop,  double maxSpeed) {
            super();
            this.brand = brand;
            this.crop = crop;
            this.maxSpeed = maxSpeed;
        }
    
        @Override
        public String toString() {
            return "Car [brand=" + brand + ", crop=" + crop + ", price=" + price + ", maxSpeed=" + maxSpeed + "]";
        }
        
    }

    添加配置:通过constructor-arg配置value,分别对应构造方法里面的参数。

    由于上面的类有两个构造方法,使用构造器注入属性值可以指定参数的位置和参数类型,用以区分重载的构造器

    <!-- 通过构造方法配置bean的属性 -->
        <bean id="car" class="com.spring.beans.Car" >
            <constructor-arg value="Audi" index="0"></constructor-arg>
            <constructor-arg value="shanghai" index="1"></constructor-arg>
            <constructor-arg value="3000" index="2" type="double"></constructor-arg>
        </bean>
        
        <!-- 使用构造器注入属性值可以指定参数的位置和参数类型,用以区分重载的构造器-->
        <bean id="car2" class="com.spring.beans.Car" >
            <constructor-arg value="Audi" index="0" type="java.lang.String"></constructor-arg>
            <constructor-arg value="shanghai" index="1" type="java.lang.String"></constructor-arg>
            <constructor-arg value="200" index="2" type="int"></constructor-arg>
        </bean>

    在main方法里面使用:把car打印出来(调用car的tostring方法)

             //1,创建spring的IOC容器对象
            //ApplicationContext代表IOC容器
             ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");//指定配置文件名
             
             Car car=(Car) ctx.getBean("car");
             Car car2=(Car) ctx.getBean("car2");
             System.out.println(car);
             System.out.println(car2);

    结果:

    上面的配置出来这个写法,还可以写成value子节点的形式:

        <bean id="car2" class="com.spring.beans.Car" >
            <constructor-arg value="Audi" index="0" type="java.lang.String"></constructor-arg>
            <constructor-arg value="shanghai" index="1" type="java.lang.String"></constructor-arg>
            <constructor-arg  type="double">
                <value>250</value>
            </constructor-arg>
        </bean>
  • 相关阅读:
    面试算法爱好者书籍/OJ推荐
    go语言——数据类型
    go编程规范
    Go语言常见语法错误
    go语言入门
    python——itertools
    linux sed使用
    python——optparse模块
    Linux基本配置
    文件包含
  • 原文地址:https://www.cnblogs.com/alsf/p/7860757.html
Copyright © 2011-2022 走看看