springbootプロジェクトのために、フレームワークは、プロジェクトの開始時にカスタムアクションを実行するために、さまざまなインタフェースを提供します。動作シナリオデータベースBenpianレコードプロジェクト立ち上げには、私たちがパッケージ化さJdbcDaoSupportインターフェイスは操作が非常に簡単であるフレームを支援するために、スプリングを使用しています。
application.properties
spring.datasource.driver- クラス -name = はcom.mysql.jdbc.Driver spring.datasource.url = JDBCます。mysql:// 120.79.xx.yy:?3306 /セキュリティuseUnicode = YES&characterEncoding = UTF-8&useSslオプション= falseの 春。 datasource.username = ルート spring.datasource.password = 132123
輸入org.springframework.jdbc.core.support.JdbcDaoSupport。 パブリック クラス DefaultDaoSupportは延びJdbcDaoSupport { パブリック 静的 最終列CREATE_TABLE_SQL = "テーブルを作成tb_student(識別BIGINT(20)NOT NULL AUTO_INCREMENT、存在しない場合は" + "ユーザ名はvarchar(64)nullではないが、" + 「年齢BIGINT(20)、PRIMARYをKEY(ID))」。 @Override 保護 ボイド initDao()がスロー例外{ スーパー.getJdbcTemplateを()(CREATE_TABLE_SQL)を実行します。 } }
@SpringBootConfiguration パブリック クラスInitConfig { @Autowired プライベートデータソースのdataSource。 @Bean 公共DaoSupport daoSupport(){ DefaultDaoSupport defaultDaoSupport = 新しいDefaultDaoSupport()。 defaultDaoSupport.setDataSource(データソース)。 返すdefaultDaoSupportを。 } }
さて、上記のコードは示されています。プロジェクトが始まったとき、それは、このSQL文CREATE_TABLE_SQLを実行します。また、非常に単純な原理は、JdbcDaoSupportクラスはInitializingBeanインタフェースのスプリングを実装し、方法はafterPropertiesSetで行う場合initDao()メソッドが呼び出されます()。
ここでは、関連するソースコードは次のとおりです。
パブリック 抽象 クラス DaoSupportは実装InitializingBean { 保護された 最終のログロガー= LogFactory.getLog(この.getClass())。 パブリックDaoSupport(){ } 公共の 最終的な ボイド afterPropertiesSet()はスローはIllegalArgumentException、BeanInitializationException { この.checkDaoConfigを(); 試す{ この().initDao。 } キャッチ(例外VAR2){ スロー 新しい BeanInitializationExceptionを( "DAOの初期化に失敗しました"、VAR2)。 } } 保護 抽象 ボイド checkDaoConfig()は、スロー、IllegalArgumentExceptionを。 保護された ボイド initDao()スロー{例外 } }
次のようにさらに、構成は次のとおりです。
@SpringBootConfiguration パブリック クラスInitConfig { @Autowired プライベートデータソースのdataSource。 @Autowired プライベートJdbcTemplate jdbcTemplate。 @Bean 公共DaoSupport daoSupport(){ DefaultDaoSupport defaultDaoSupport = 新しいDefaultDaoSupport()。 // defaultDaoSupport.setDataSource(データソース); defaultDaoSupport.setJdbcTemplate(jdbcTemplate)。 返すdefaultDaoSupportを。 } }