您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Spring復雜對象怎么創建”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Spring復雜對象怎么創建”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
什么是復雜類型,比如連接數據庫的Connection對象,以及Mybatis中的SqlSessionFactory對象。
在以前我們是通過這種方式獲取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.printStackTrace(); }
現在使用Spring如何創建這種類型的對象?Spring中提供了三種方法來創建復雜對象
public class ConnectionFactoryBean implements FactoryBean<Connection> { //用于書寫創建復雜對象的代碼 @Override public Connection getObject() throws Exception { Class.forName(driverClassName); Connection conn = DriverManager.getConnection(url, username, password); return conn; } @Override public Class<?> getObjectType() { return Connection.class; } @Override public boolean isSingleton() { return true; } private String driverClassName; private String url; private String username; private String password; //setter and getter省略
在applicationContext.xml配置文件中
<bean id="conn" class="com.liu.factorybean.ConnectionFactoryBean"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mysql?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean>
對這種使用的解讀:FactoryBean接口中有三個抽象方法
○ 如果就想獲得FactoryBean類型的對象 ctx.getBean("&conn")
獲得就是ConnectionFactoryBean對象
○ isSingleton方法
返回 true 只會創建一個復雜對象
返回 false 每一次都會創建新的對象
問題:根據這個對象的特點 ,決定是返回true (SqlSessionFactory) 還是 false (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實例 --> <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復雜對象怎么創建”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。