类org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration源码实例Demo

下面列出了怎么用org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: n2o-framework   文件: N2oAutoConfigurationTest.java
@Test
    public void sql() {
        new ApplicationContextRunner()
                .withPropertyValues("spring.datasource.driver-class-name=org.h2.Driver",
                        "spring.datasource.url=jdbc:h2:mem:test",
                        "spring.datasource.username=sa",
                        "spring.datasource.password=sa")
//                .withClassLoader(new FilteredClassLoader(JdbcTemplate.class))
                .withConfiguration(AutoConfigurations.of(
                        DataSourceAutoConfiguration.class,
                        JdbcTemplateAutoConfiguration.class,
                        N2oSqlAutoConfiguration.class)).run(ctx -> {
            assertThat(ctx).hasSingleBean(SqlInvocationEngine.class);
            assertThat(ctx).hasSingleBean(SqlDataProviderEngine.class);
            assertThat(ctx).hasSingleBean(PostgresIndexRowMapper.class);
        });
    }
 
@Test
public void processEngineWithJpaEntityManager() throws Exception {
    AnnotationConfigApplicationContext context = this.context(DataSourceAutoConfiguration.class,
            HibernateJpaAutoConfiguration.class, JpaProcessEngineAutoConfiguration.JpaConfiguration.class);
    Assert.assertNotNull("entityManagerFactory should not be null", context.getBean(EntityManagerFactory.class));
    Assert.assertNotNull("the processEngine should not be null!", context.getBean(ProcessEngine.class));
    SpringProcessEngineConfiguration configuration = context.getBean(SpringProcessEngineConfiguration.class);
    Assert.assertNotNull("the " + SpringProcessEngineConfiguration.class.getName() + " should not be null", configuration);
    Assert.assertNotNull(configuration.getJpaEntityManagerFactory());
}
 
@Test
public void launchProcessDefinition() throws Exception {
    AnnotationConfigApplicationContext applicationContext = this.context(
            DataSourceAutoConfiguration.class, DataSourceProcessEngineAutoConfiguration.DataSourceProcessEngineConfiguration.class);
    RepositoryService repositoryService = applicationContext.getBean(RepositoryService.class);
    Assert.assertNotNull("we should have a default repositoryService included", repositoryService);
    Assert.assertEquals(2, repositoryService.createProcessDefinitionQuery().count());
    List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery()
            .processDefinitionKey("waiter")
            .list();
    Assert.assertNotNull(processDefinitionList);
    Assert.assertTrue(!processDefinitionList.isEmpty());
    ProcessDefinition processDefinition = processDefinitionList.iterator().next();
    Assert.assertEquals("waiter", processDefinition.getKey());
}
 
@Test
public void withEntityManagerFactoryBeanAndMissingSpringProcessEngineConfigurationClass() {
    contextRunner
        .withConfiguration(AutoConfigurations.of(
            DataSourceAutoConfiguration.class,
            HibernateJpaAutoConfiguration.class
        ))
        .withClassLoader(new FilteredClassLoader(SpringProcessEngineConfiguration.class))
        .run(context -> {
            assertThat(context).doesNotHaveBean(FlowableJpaAutoConfiguration.class);
        });
}
 
/**
 * Runs shell with given command files, waits 1 min for  completion
 * @param commandFiles
 */
private boolean runShell(String commandFiles) {
	String dataFlowUri = applicationContext.getEnvironment().getProperty("dataflow.uri");
	ExecutorService executorService = Executors.newFixedThreadPool(1);
	Future<?> completed = executorService.submit(() -> {
		new SpringApplicationBuilder(ShellApp.class)
				.web(WebApplicationType.NONE)
				.bannerMode(Banner.Mode.OFF)
				.run(
						"--spring.shell.command-file=" + commandFiles,
						"--spring.cloud.config.enabled=false",
						"--spring.autoconfigure.exclude=" + Stream.of(SessionAutoConfiguration.class,
								DataSourceAutoConfiguration.class,
								HibernateJpaAutoConfiguration.class)
								.map(Class::getName)
								.collect(Collectors.joining(",")),
						"--dataflow.uri=" + dataFlowUri

				);
	});

	try {
		completed.get(60, TimeUnit.SECONDS);
		return true;
	}
	catch (Throwable e) {
		// return false;
		// TODO: BOOT2 we're getting app run error. Might be something to do with reordering of events when boot runs an app.
		//       There's checks for app run result so for now just return true.
		//       o.s.b.SpringApplication:845 - Application run failed
		//       java.lang.IllegalStateException: org.spring[email protected]377f9cb6 has been closed already
		//
		return true;
	}
	finally {
		executorService.shutdownNow();
	}

}
 
@Before
public void setup() {
	context = new AnnotationConfigApplicationContext();
	context.setId("testDataFlowConfig");
	context.register(DataFlowServerConfigurationTests.TestConfiguration.class,
			SecurityAutoConfiguration.class, DataFlowServerAutoConfiguration.class,
			DataFlowControllerAutoConfiguration.class, DataSourceAutoConfiguration.class,
			DataFlowServerConfiguration.class, PropertyPlaceholderAutoConfiguration.class,
			RestTemplateAutoConfiguration.class, HibernateJpaAutoConfiguration.class, WebConfiguration.class,
			SchedulerConfiguration.class, JacksonAutoConfiguration.class, SimpleTaskAutoConfiguration.class,
			ResourceLoadingAutoConfiguration.class);
	environment = new StandardEnvironment();
	propertySources = environment.getPropertySources();
}
 
@Test
public void processEngineWithBasicDataSource() throws Exception {
    AnnotationConfigApplicationContext context = this.context(
            DataSourceAutoConfiguration.class, DataSourceProcessEngineAutoConfiguration.DataSourceProcessEngineConfiguration.class);
    Assert.assertNotNull("the processEngine should not be null!", context.getBean(ProcessEngine.class));
}
 
@Test
public void withEntityManagerFactoryBeanAndSpringProcessEngineConfigurationClass() {
    contextRunner
        .withConfiguration(AutoConfigurations.of(
            DataSourceAutoConfiguration.class,
            HibernateJpaAutoConfiguration.class
        ))
        .run(context -> {
            assertThat(context)
                .hasSingleBean(FlowableJpaAutoConfiguration.class)
                .hasBean("jpaProcessEngineConfigurer");

            EntityManagerFactory entityManagerFactory = context.getBean(EntityManagerFactory.class);
            @SuppressWarnings("unchecked")
            EngineConfigurationConfigurer<SpringProcessEngineConfiguration> jpaProcessEngineConfigurer =
                (EngineConfigurationConfigurer<SpringProcessEngineConfiguration>) context
                    .getBean("jpaProcessEngineConfigurer", EngineConfigurationConfigurer.class);

            SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration();

            assertThat(configuration.getJpaEntityManagerFactory())
                .as("Process JPA Entity Manager Factory")
                .isNull();
            assertThat(configuration.isJpaHandleTransaction())
                .as("Process JPA handle transaction")
                .isFalse();
            assertThat(configuration.isJpaCloseEntityManager())
                .as("Process JPA close entity manager")
                .isFalse();

            jpaProcessEngineConfigurer.configure(configuration);

            assertThat(configuration.getJpaEntityManagerFactory())
                .as("Process JPA Entity Manager Factory")
                .isSameAs(entityManagerFactory);
            assertThat(configuration.isJpaHandleTransaction())
                .as("Process JPA handle transaction")
                .isFalse();
            assertThat(configuration.isJpaCloseEntityManager())
                .as("Process JPA close entity manager")
                .isFalse();
        });
}
 
@Before
public void setUp() {
  AutoConfigurations autoConfigurationsUnderTest = AutoConfigurations.of(CamundaBpmAutoConfiguration.class, CamundaBpmWebappAutoConfiguration.class);
  AutoConfigurations additionalAutoConfigurations = AutoConfigurations.of(DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class);
  contextRunner = new WebApplicationContextRunner().withConfiguration(autoConfigurationsUnderTest).withConfiguration(additionalAutoConfigurations);
}
 
@Before
public void setUp() {
  AutoConfigurations autoConfigurationsUnderTest = AutoConfigurations.of(CamundaBpmAutoConfiguration.class, CamundaBpmWebappAutoConfiguration.class);
  AutoConfigurations additionalAutoConfigurations = AutoConfigurations.of(DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class);
  contextRunner = new WebApplicationContextRunner().withConfiguration(autoConfigurationsUnderTest).withConfiguration(additionalAutoConfigurations);
}
 
 同包方法