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;
    }
}

第三步:配置配

@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會自動在容器中查詢,並注入。










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章