Spring(二)-IOC

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容