### Question:
SqlSessionFactoryBean implements FactoryBean<SqlSessionFactory>, InitializingBean, ApplicationListener<ApplicationEvent> { public void setConfiguration(Configuration configuration) { this.configuration = configuration; }  void setObjectFactory(ObjectFactory objectFactory); void setObjectWrapperFactory(ObjectWrapperFactory objectWrapperFactory); DatabaseIdProvider getDatabaseIdProvider(); void setDatabaseIdProvider(DatabaseIdProvider databaseIdProvider); Class<? extends VFS> getVfs(); void setVfs(Class<? extends VFS> vfs); Cache getCache(); void setCache(Cache cache); void setPlugins(Interceptor[] plugins); void setTypeAliasesPackage(String typeAliasesPackage); void setTypeAliasesSuperType(Class<?> typeAliasesSuperType); void setTypeHandlersPackage(String typeHandlersPackage); void setTypeHandlers(TypeHandler<?>[] typeHandlers); void setTypeAliases(Class<?>[] typeAliases); void setFailFast(boolean failFast); void setConfigLocation(Resource configLocation); void setConfiguration(Configuration configuration); void setMapperLocations(Resource[] mapperLocations); void setConfigurationProperties(Properties sqlSessionFactoryProperties); void setDataSource(DataSource dataSource); void setSqlSessionFactoryBuilder(SqlSessionFactoryBuilder sqlSessionFactoryBuilder); void setTransactionFactory(TransactionFactory transactionFactory); void setEnvironment(String environment); @Override void afterPropertiesSet(); @Override SqlSessionFactory getObject(); @Override Class<? extends SqlSessionFactory> getObjectType(); @Override boolean isSingleton(); @Override void onApplicationEvent(ApplicationEvent event);  }### Answer:
@Test void testSetConfiguration() throws Exception { setupFactoryBean(); Configuration customConfiguration = new Configuration(); customConfiguration.setCacheEnabled(false); customConfiguration.setUseGeneratedKeys(true); customConfiguration.setDefaultExecutorType(ExecutorType.REUSE); customConfiguration.setVfsImpl(JBoss6VFS.class); factoryBean.setConfiguration(customConfiguration); SqlSessionFactory factory = factoryBean.getObject(); assertThat(factory.getConfiguration().getEnvironment().getId()).isEqualTo(SqlSessionFactoryBean.class.getSimpleName()); assertThat(factory.getConfiguration().getEnvironment().getDataSource()).isSameAs(dataSource); assertThat(factory.getConfiguration().getEnvironment().getTransactionFactory().getClass()).isSameAs(SpringManagedTransactionFactory.class); assertThat(factory.getConfiguration().getVfsImpl()).isSameAs(JBoss6VFS.class); assertThat(factory.getConfiguration().isCacheEnabled()).isFalse(); assertThat(factory.getConfiguration().isUseGeneratedKeys()).isTrue(); assertThat(factory.getConfiguration().getDefaultExecutorType()).isSameAs(ExecutorType.REUSE); }
@Test public void testSetConfiguration() throws Exception { setupFactoryBean(); Configuration customConfiguration = new Configuration(); customConfiguration.setCacheEnabled(false); customConfiguration.setUseGeneratedKeys(true); customConfiguration.setDefaultExecutorType(ExecutorType.REUSE); customConfiguration.setVfsImpl(JBoss6VFS.class); factoryBean.setConfiguration(customConfiguration); SqlSessionFactory factory = factoryBean.getObject(); assertEquals(factory.getConfiguration().getEnvironment().getId(), SqlSessionFactoryBean.class.getSimpleName()); assertSame(factory.getConfiguration().getEnvironment().getDataSource(), dataSource); assertSame(factory.getConfiguration().getEnvironment().getTransactionFactory().getClass(), SpringManagedTransactionFactory.class); assertSame(factory.getConfiguration().getVfsImpl(), JBoss6VFS.class); assertFalse(factory.getConfiguration().isCacheEnabled()); assertTrue(factory.getConfiguration().isUseGeneratedKeys()); assertSame(factory.getConfiguration().getDefaultExecutorType(), ExecutorType.REUSE); }