Spring中通过FactoryBean创建复杂对象

FactoryBean接口主要用来创建一些不能直接new出来的对象,原理是实现FactoryBean接口,加入泛型,实现接口中的方法。通过getObject()方法来获得所需对象。

1.编写实体类(以JDBC中的Connection为例),这里不需要编写。

2.编写自定义FactoryBean 实现FactoryBean接口,并且加入要创建对象的泛型,实现接口中的方法。

public class ConnFactoryBean implements FactoryBean<Connection>{
    private String driver;
    private String url;
    private String username;
    private String password;
    @Override
    public Connection getObject() throws Exception {  //此方法用来创建对象
        Class.forName(driver);
        Connection con=DriverManager.getConnection(url, username, password);
        return con; 
    }

    @Override
    public Class<?> getObjectType() {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public boolean isSingleton() {    //返回值为false的话,说明对象是多例的,每次使用都会创建一个新的对象
        // TODO Auto-generated method stub
        return false;
    }

    public String getDriver() {
        return driver;
    }
    public void setDriver(String driver) {
        this.driver = driver;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

3.将编写的类在applicationContext.xml中注册。

4.在测试类中进行测试,获得Connection。

public static void main(String[] args) {
        
        ApplicationContext ac=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
  
        Connection conn=(Connection) ac.getBean("connFactoryBean");


        System.out.println(conn);

    }

猜你喜欢

转载自blog.csdn.net/wt122694/article/details/81190399
今日推荐