spring装配bean

方式一:装配类装配

第一步定义bean

public class MyBean {
}

第二部定义装配类

@Configuration//装配类注解
public class MyConfig {
    @Bean
    @Scope("prototype")//设置多例
    public MyBean createMyBean() {
        return new MyBean();
    }
}

测试

public class App {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
//        AnnotationConfigApplicationContext context1 = new AnnotationConfigApplicationContext("com.jiulin.spring");//扫描包转摘配置类。
        System.out.println(context.getBean(MyBean.class));
        context.close();
    }
}

方式二:工厂类创建bean

第一步:定义bean

public class Jeep {
}

第二部:定义工厂类

public class RunableFactoryBean implements FactoryBean<Jeep> {
    public Jeep getObject() throws Exception {
        return new Jeep();
    }

    public Class<?> getObjectType() {
        return Jeep.class;
    }

    public boolean isSingleton() {
        return false;
    }
}

第三步:配置配

扫描二维码关注公众号,回复: 2287300 查看本文章
@Configuration//装配类注解
public class MyConfig {
    @Bean
    public RunableFactoryBean createRunableFactoryBean() {
        return new RunableFactoryBean();
    }
}

第四步:测试

public class App {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
//      AnnotationConfigApplicationContext context1 = new AnnotationConfigApplicationContext("com.jiulin.spring");//扫描包转摘配置类。
        System.out.println(context.getBean(RunableFactoryBean.class));//com.jiulin.spring.RunableFactoryBean@4e4aea35
	System.out.println(context.getBean("&createRunableFactoryBean"));//com.jiulin.spring.RunableFactoryBean@4e4aea35
	System.out.println(context.getBean("createRunableFactoryBean"));//com.jiulin.spring.Jeep@1442d7b5
        context.close();

    }
}

方式三:自定义工厂

第一步:定义bean

public class Car {
}

第二步:自定义工厂

public class CarFactory {
    public Car createCar(){
        return new Car();
    }
}

第三步:配置类

@Configuration//装配类注解
public class MyConfig {
    @Bean
    public CarFactory createCarFactory() {
        return new CarFactory();
    }
    @Bean
    public Car createCar(CarFactory factory) {
        return factory.createCar();
    }
}

第四步:测试

public class App {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
//      AnnotationConfigApplicationContext context1 = new AnnotationConfigApplicationContext("com.jiulin.spring");//扫描包转摘配置类。
	System.out.println(context.getBean("createCar"));//com.jiulin.spring.Car@1ee807c6
	System.out.println(context.getBean("&createCar"));//获得工厂类
        context.close();

    }
}
 
  

在创建Car时需要CarFactoryspring会自动在容器中查询,并注入。










猜你喜欢

转载自blog.csdn.net/hello_it_/article/details/78737576