在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中提供了三种方法来创建复杂对象
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证书,解决问题的方式
注意:类中的几个连接数据库的属性,是自己添加的,便于在配置文件中注入,实现解耦合。
直接在这个类写创建复杂对象的方法,不用实现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 条评论) |