一、直接装配
package com.lh.bean;
/**
* @ClassName: MyBean
* @Description: 简单直接方式注入bean
* @author Liu
* @date 2018年5月26日 下午6:21:44
*/
public class MyBean {
}
/***
* @Title: createMyBean
* @Description: 1、返回bean名称默认为方法名
* 2、同时也可以手动指定bean名称
* @param @return
* @return MyBean
* @throws
*/
@Bean(name = "myBean")
@Scope("prototype")//指定为原型方式,即多例
public MyBean createMyBean() {
return new MyBean();
}
二、FactoryBean工厂方式
package com.lh.bean2;
import org.springframework.beans.factory.FactoryBean;
/**
* @ClassName: RunnableFactoryBean
* @Description: TODO
* @author Liu
* @date 2018年5月26日 下午6:44:07
*/
public class JeepFactoryBean implements FactoryBean<Jeep> {
@Override
public Jeep getObject() throws Exception {
return new Jeep();
}
@Override
public Class<?> getObjectType() {
return Jeep.class;
}
@Override
public boolean isSingleton() {
// return true;
return false;
}
}
@Bean
public JeepFactoryBean createJeepFactoryBean() {
return new JeepFactoryBean();
}
三、普通工厂模式方式
package com.lh.bean3;
/**
* @ClassName: JeepFactory
* @Description: TODO
* @author Liu
* @date 2018年5月26日 下午9:59:06
*/
public class CarFactory {
public Car create() {
return new Car();
}
}
package com.lh.bean3;
/**
* @ClassName: Car
* @Description: 自定义工厂类创建实体,实体创建依赖之前定义的工厂类
* @author Liu
* @date 2018年5月26日 下午10:04:06
*/
public class Car {
}
@Bean
public CarFactory createCarFactory() {
return new CarFactory();
}