開發步驟java
實現FactoryBean接口mysql
Spring配置文件中註冊sql
<bean id="conn" class="com.yuziyan.factorybean.ConnectionFactoryBean"/>
注意:框架
若是class類型是FactoryBean接口的實現類,那麼經過id值得到的是這個類getObject()
方法所返回的對象。好比 Connection SqlSessionFactoryurl
因爲咱們此時想獲取的是Connection對象,因此須要在pom.xml文件中加入相關的依賴spa
<!-- MySql鏈接 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency>
細節分析code
若是就想得到FactoryBean類型的對象,在id前加上&符號,ctx.getBean("&conn")
,此時得到的就是ConnectionFactoryBean對象自己。xml
isSingleton()
方法,返回 true 只會建立一個複雜對象,返回 false 每一次都會建立新的對象對象
問題:根據這個對象的特色 ,決定是返回true (SqlSessionFactory) 仍是 false (Connection)。blog
mysql高版本鏈接建立時,須要制定SSL證書,解決問題的方式。
url = "jdbc:mysql://localhost:3306/suns?useSSL=false"
體會依賴注入(DI)
能夠把ConnectionFactoryBean中依賴的4個字符串信息 ,在配置文件中進行注入 ,解耦合。
<bean id="conn" class="com.yuziyan.factorybean.ConnectionFactoryBean"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean>
FactoryBean的實現原理[簡易版]
Spring內部運行流程:
conn
得到ConnectionFactoryBean類的對象。getObject()
方法返回Connection類的對象。體現了接口回調的特色。FactoryBean總結
Spring中用於建立複雜對象的一種方式,也是Spring原生提供的,後續講解Spring整合其餘框架,大量應用FactoryBean