-1
我要寫一個能夠完成一些工作並使用彈簧數據的庫。使用Spring數據的Java庫
這個想法是使用這個庫的項目可以導入這個jar並使用這個庫:MyLib.doSomeStuff()。
以這種方式使用Spring是可能的,我怎樣才能在doSomeStuff()方法中初始化ApplicationContext,以便DI和帶有DataSources的@Configuration類將被加載?
public class MyLib {
@Autowired
private static SomeJpaRepository someJpaRepository;
public static void doSomeStuff(){
...init ApplicationContext....
...setup DataSources...
List<SomeEntity> someEntityList = someJpaRepository.someMethod();
}
// or
public static List<SomeEntity> getSomeEntityList() {
return someJpaRepository.finAll();
}
}
//other package
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "gxEntityManager", transactionManagerRef = "gxTransactionManager",
basePackages = "com.gx")
public class GxConfig {
@Primary
@Bean(name = "gxDataSource")
public DataSource gxDataSource() {
DataSourceBuilder dataSourceBuilderGx = null;
//..
return dataSourceBuilderGx.build();
}
@Primary
@Bean(name = "gxEntityManager")
public LocalContainerEntityManagerFactoryBean gxEntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder.dataSource(gxDataSource()).packages("com.gx").build();
}
@Primary
@Bean(name = "gxTransactionManager")
public PlatformTransactionManager gxTransactionManager(
@Qualifier("gxEntityManager") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
//other package
public interface SomeEntity extends JpaRepository<SomeEntity, Long>
{
SomeEntity findById(Long id);
}
你不應該啓動這樣的春天應用程序上下文庫中。如果你正在建造一個圖書館,把它建成一個圖書館,而不是別的。讓用戶決定如何創建bean等。您可以提供xml或基於Java的配置來幫助lib用戶更輕鬆地配置Spring。 –