Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Java Config / 2 сообщений из 2, страница 1 из 1
09.08.2016, 17:59
    #39289204
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Java Config
Почему сначала иницилизируется бин entityManagerFactory а потом dataSourceInitializer
И как можно поменять их местами?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
@Configuration
public class DataSourceConfig {

	@Bean
	public DataSource dataSource() throws Exception {
		EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
		builder.setType(EmbeddedDatabaseType.H2);
		return builder.build();
	}

	@Value("classpath:schema.sql")
	private Resource H2_SCHEMA_SCRIPT;

	@Value("classpath:test-data.sql")
	private Resource H2_DATA_SCRIPT;

	@Bean
	public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
		final DataSourceInitializer initializer = new DataSourceInitializer();
		initializer.setDataSource(dataSource);
		initializer.setDatabasePopulator(databasePopulator());
		return initializer;
	}

	private DatabasePopulator databasePopulator() {
		final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
		populator.addScript(H2_SCHEMA_SCRIPT);
		populator.addScript(H2_DATA_SCRIPT);
		return populator;
	}

}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
@Configuration
public class HibernateConfig {

	@Autowired
	DataSource dataSource;

	private static Properties hibernateProperties() {
		Properties hibernateProperties = new Properties();
		hibernateProperties.setProperty("org.hibernate.envers.audit_table_suffix", "_H");
		hibernateProperties.setProperty("org.hibernate.envers.revision_field_name", "AUDIT_REVISION");
		hibernateProperties.setProperty("org.hibernate.envers.revision_type_field_name", "ACTION_TYPE");
		hibernateProperties.setProperty("org.hibernate.envers.audit_strategy",
				"org.hibernate.envers.strategy.ValidityAuditStrategy");
		hibernateProperties.setProperty("org.hibernate.envers.audit_strategy_validity_end_rev_field_name",
				"AUDIT_REVISION_END");
		hibernateProperties.setProperty("org.hibernate.envers.audit_strategy_validity_store_revend_timestamp", "true");
		hibernateProperties.setProperty("org.hibernate.envers.audit_strategy_validity_revend_timestamp_field_name",
				"AUDIT_REVISION_END_TS");

		hibernateProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
		hibernateProperties.setProperty("hibernate.max_fetch_depth", "3");
		hibernateProperties.setProperty("hibernate.jdbc.fetch_size", "50");
		hibernateProperties.setProperty("hibernate.jdbc.batch_size", "10");
		hibernateProperties.setProperty("hibernate.show_sql", "false");
		return hibernateProperties;
	}

	@Bean
	public HibernateJpaVendorAdapter jpaVendorAdapter() {
		HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
		hibernateJpaVendorAdapter.setShowSql(false);
		hibernateJpaVendorAdapter.setGenerateDdl(true);
		hibernateJpaVendorAdapter.setDatabase(Database.H2);
		return hibernateJpaVendorAdapter;
	}

	@Bean
	public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
		JpaTransactionManager transactionManager = new JpaTransactionManager();
		transactionManager.setEntityManagerFactory(entityManagerFactory);
		return transactionManager;
	}

	@Bean
	public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws Exception {
		HibernateJpaVendorAdapter vendorAdapter = jpaVendorAdapter();

		LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
//		 factory.setPersistenceUnitName("sample");
		factory.setJpaVendorAdapter(vendorAdapter);
		factory.setPackagesToScan("by.lesharb.springtest.domain");
		factory.setDataSource(dataSource);

		factory.setJpaProperties(hibernateProperties());
		factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver());

		return factory;
	}
}
...
Рейтинг: 0 / 0
11.08.2016, 10:14
    #39290154
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Java Config
Пишите чистый код ... понятно что многое спринг делает за вас ...но все же если у вас зависимости пропишите их

пусть даже по умолчанию елси именования дефолтные спринг сам все поймет ... а вдруг ? Будьте фаталистом :)


http://www.concretepage.com/spring/example_dependson_spring


В общем случае : явно укажите @Autowired

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    @Bean(name = "rDataSource")
    public DataSource rDataSource() {
   return dataSource;
  }


   @Autowired
    @Bean(name = "entityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(@Qualifier("rDataSource") DataSource rDataSource) {

 return em;
}

    @Autowired
    @Bean(name = "transactionManager")
    public PlatformTransactionManager transactionManager(@Qualifier("entityManagerFactory") LocalContainerEntityManagerFactoryBean entityManagerFactory) {
        JpaTransactionManager txManager = new JpaTransactionManager();
        txManager.setEntityManagerFactory(entityManagerFactory.getObject());
        return txManager;
    }
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Java Config / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]