- 第一步 创建一个类 实现 beanFactory 接口 ,实现三个方法
public class MyConfigFactoryBean implements FactoryBean<Connection> {
@Override
public Connection getObject() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "root");
return connection;
}
@Override
public Class<?> getObjectType() {
return Connection.class;
}
@Override
public boolean isSingleton() {
return false;
}
}
- 在applicationContext.xml中配置bean标签
<bean id="connection" class="cn.itcast.controller.MyConfigFactoryBean"></bean>
- 通过创建aoc容器,调用getBean返回的是一个复杂对象
@Test
public void test1(){
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
Connection connection =(Connection) ac.getBean("connection");
System.out.println(connection);
}
- 如果需要返回的是工厂本身,需要在getBean方法的参数前面加上 &
public void test1(){
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
Connection connection =(Connection) ac.getBean("connection");
MyConfigFactoryBean factoryBean =(MyConfigFactoryBean) ac.getBean("&connection");
System.out.println(connection);
System.out.println(factoryBean);
}