spring装配bean

来源:互联网 发布:迭代器模式 java 编辑:程序博客网 时间:2024/06/03 10:35

方式一:装配类装配

第一步定义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@4e4aea35System.out.println(context.getBean("&createRunableFactoryBean"));//com.jiulin.spring.RunableFactoryBean@4e4aea35System.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@1ee807c6System.out.println(context.getBean("&createCar"));//获得工厂类        context.close();    }}

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