纯注解开发模式实现管理第三方Bean(SqlSessionFactory),SqlSessionFactoryBean的用法
创建SqlSessionFactory就需要DataSource
所以我们先创建DataSource的Bean
public class JdbcConfig { @Value("${jdbc.driver}") private String driver; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String userName; @Value("${jdbc.password}") private String password; @Bean public DataSource dataSource(){ DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName(driver); ds.setUrl(url); ds.setUsername(userName); ds.setPassword(password); return ds; }}
这部分就相当于以下图片
创建了 DataSource之后就可以创建SqlSessionFactory的工厂类
因为创建SqlSessionFactory需要太多东西了,我们直接用别人创建好的工厂对象SqlSessionFactoryBean创建出来因为
SqlSessionFactoryBean实现了FactoryBean
所以他可以创造出来SqlSessionFactory,而且更简单
ssfb.setDataSource(DataSource ds)注意这传入的是DataSource对象
这里就要用到我们刚才创建出来的DataSource的Bean直接设置为为形参传入进来即可
@Bean public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){ SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean(); ssfb.setTypeAliasesPackage("com.dd.domain"); ssfb.setDataSource(dataSource); return ssfb; }
最后一步就是
的配置文件这一步我们该怎么写呢?
就是以下代码
//定义bean,返回MapperScannerConfigurer对象 @Bean public MapperScannerConfigurer mapperScannerConfigurer(){ MapperScannerConfigurer msc = new MapperScannerConfigurer(); msc.setBasePackage("com.dd.dao"); return msc; }
这下我们就配置完毕了创造出工厂了之后SqlSessionFactory之后,
java会自动根据配置文件或者注解创造出对应的代理对象
开发者涨薪指南
48位大咖的思考法则、工作方式、逻辑体系