美文网首页
Spring(二)-IOC

Spring(二)-IOC

作者: yzw12138 | 来源:发表于2017-07-19 15:16 被阅读0次

    2、IOC中Bean的配置

    • 1、基于xml文件
    • 2、通过工厂方法
      1、通过调用静态工厂方法创建bean
          public class StaticCarFactory{
                private static Map<String,Car> cars=new HashMap<String,Car>();
                static{
                      cats.put("audi",300000);
                      cars.put(:ford",400000);
                }
                //静态工厂方法
                public static Car getCar(String name){
                      return cars.get(name);
                }
          }
    

    配置文件:通过静态工厂方法来配置bean,不是配置静态工厂方法实例,而是配置bean实例

    <!--factory-method:指向静态工厂方法的名字
          constructor-arg:如果工厂方法需要传入参数,则使用constructor-arg来配置参数-->
    <bean id="car1 class="com.bean.StaticCarFactory"
                factory-method="getCar">
                <constructor-arg value="audi"></constructor>
    </bean>
    

    2、通过调用实例工厂方法创建bean

    public class InstanceCarFactory(){
          private Map<String,Car> cars=null;
          public InstanceCarFactory(){
                cars=new HashMap<String,Car>();
                cats.put("audi",new Car("audi",300000));
                cars.put("ford",new Car("ford",400000));
          }
          public Car getCar(String brand){
                return cars.get(brand);
          }
    }
    

    配置文件

    <!--配置工厂实例-->
    <bean id="carFactory" class="com.bean.InstanceCarFactory>
    <!--通过实例工厂方法来配置bean-->
    <bean id="car2" factory-bean="carFactory" factory-method="getCar">
          <constructor-arg value="audi"></constructor>
    </bean>
    
    • 3、**FactoryBean方式配置bean
    //自定义FactoryBean并实现FactoryBean接口
    public CarFaotoryBean implement FactoryBean<Car>{
          private String brand;
          public void setBrand(String brand){
                this.brand=brand;
          }
          @Override
          public Car getObject() throws Exception{
                return new Car("BMW",50000);
          }
          @Override
          public Class<?> getObjectType(){
                return Car.class;
          }
          @Override
          public boolean isSingleton(){
                 return true
          }
    }
    

    配置文件

    <!--通过FactoryBean来配置bean实例
          property:配置FactoryBean的属性,但实际返回的实例FactoryBean的getObject()方法返回的实例-->
    <bean id="car" class="com.bean.CarFaotoryBean>
          <property name="brand" value="BMW"></property>
    </bean>
    
    • 4、基于注解方式配置
    Paste_Image.png Paste_Image.png Paste_Image.png

    首先,创建多个类并用不同的注解进行标识,将这些类放在同一包下(如:com.bean.annotation)在Spring配置文件中配置。

    <!--可以通过resource-pattern指定扫描的资源-->
    <context:componment-scan base-package="com.bean.annotation"></context:componment-scan>
    

    配置完成后,在main方法中分别通过容器调用不同类中的方法进行执行。

    • 通过注解自动完成bean之间的关联:当一个类的属性为另一个类对象是,在这个属性上添加以下注解可以让bean自动关联。


      Paste_Image.png
      Paste_Image.png

    3、泛型依赖注入

    Paste_Image.png

    相关文章

      网友评论

          本文标题:Spring(二)-IOC

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