首页 > 作文

Spring复杂对象创建的方式小结

更新时间:2023-04-04 14:20:20 阅读: 评论:0

在spring中,对于简单类型的创建,我们可以使用t注入和构造注入。但是对于复杂类型的如何创建?

什么是复杂类型,比如连接数据库的connection对象,以及mybatis中的sqlssionfactory对象。
在以前我们是通过这种方式获取connection对象的:

connection conn = null;        try {            class.forname("com.mysql.cj.jdbc.driver");            conn = drivermanager.getconnection("jdbc:mysql://localhost:3306/mysql", "root", "123456");        } catch (classnotfoundexception e) {            e.printstacktrace();        } catch (sqlexception e) {            e.pri梦见自己打别人ntstacktrace();        }

现在使用spring如何创建这种类型的对象?spring中提供了三种方法来创建复杂对象

第一种:实现factorybean接口

public class connectionfactorybean implements factorybean<connection> {    //用于书写创建复杂对象的代码    @override    public connection getobject() throws exception {        class.forname(driverclassname);        connection conn = drivermanager.getconnection(url, urname, password);        return conn;    }    @override    public class<?> getobjecttype() {        return connection.class;    }    @override    public boolean issingleton() {        return true;    }    private str1927年大革命ing driverclassname;    private string url;    private string urname;    private string password;//tter and getter省略

在applicationcontext.xml配置文件中

<bean id="conn" class="com.liu.factorybean.connectionfactorybean">            <property name="driverclassname" value="com.mysql.cj.jdbc.driver"/>            <property name="url" valu科创中国e="jdbc:mysql://localhost:3306/mysql?ussl=fal"/>            <property name="urname" value="root"/>            <property name="password" value="123456"/></bean>

对这种使用的解读:factorybean接口中有三个抽象方法

○ 如果就想获得factorybean类型的对象 ctx.getbean(“&conn”)
获得就是connectionfactorybean对象
○ issingleton方法
返回 true 只会创建一个复杂对象
返回 fal 每一次都会创建新的对象
问题:根据这个对象的特点 ,决定是返回true (sqls建筑业营改增essionfactory) 还是 fal (connection)
○ mysql高版本连接创建时,需要制定ssl证书,解决问题的方式
注意:类中的几个连接数据库的属性,是自己添加的,便于在配置文件中注入,实现解耦合。

第二种方法:实例工厂 避免spring框架的侵入整合遗留系统

直接在这个类写创建复杂对象的方法,不用实现factorybean接口。

public class connectionfactory {    public connection getconnection(){        connection conn = null;        try {            class.forname("com.mysql.cj.jdbc.driver");            conn = drivermanager.getconnection("jdbc:mysql://localhost:3306/mysql", "root", "123456");        } catch (classnotfoundexception e) {            e.printstacktrace();        } catch (sqlexception e) {            e.printstacktrace();        }        return conn;    }}

但是要在配置文件中进行配置

<!--connectionfactory实例 --&g高中教师个人工作总结t; <bean id="connfactory" class="com.liu.factorybean.connectionfactory"></bean> <!--在factory-bean中应用connectionfactory实例id connfactory --> <bean id="conn"  factory-bean="connfactory" factory-method="getconnection"/>

第三种方式:静态工厂

和实例工厂类似,只不过这里把实例方法,替换为静态方法。

public class staticconnectionfactory {    public static connection getconnection(){        connection conn = null;        try {            class.forname("com.mysql.cj.jdbc.driver");            conn = drivermanager.getconnection("jdbc:mysql://localhost:3306/mysql", "root", "123456");        } catch (classnotfoundexception e) {            e.printstacktrace();        } catch (sqlexception e) {            e.printstacktrace();        }        return conn;    }}

对应配置文件配置如下:

<bean id="conn" class="com.liu.factorybean.staticconnectionfactory" factory-method="getconnection"/>

总结:

这些复杂对象我们在以后很少用到,因为我们在整合其他框架时,其他框架为我们提过了,创建复杂对象的方法,比如spring整合mybatis,mybatis提供了创建sqlssionfactory对象的方法。但是学习这些也是有必要的,因为这些框架底层使用的就是factorybean等这几种方式。

到此这篇关于spring复杂对象创建的三种方式的文章就介绍到这了,更多相关spring复杂对象内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 14:20:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/b8f0fe2f9cf802b7fe45a48e1acab8e9.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Spring复杂对象创建的方式小结.doc

本文 PDF 下载地址:Spring复杂对象创建的方式小结.pdf

标签:对象   方法   实例   配置文件
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图