我有两个类,我想在运行时只使用其中一个类(取决于我是在服务器上运行测试还是执行应用程序(本地还是其他))并将另一个从Spring的组件扫描中排除。
这里是我在测试时要使用的第一个类:
public class HibernateUtilForH2 implements HibernateUtil {
private static SessionFactory sessionFactory;
static {
try {
Configuration configuration = new Configuration().configure("hibernate.cfg.xml.h2");
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties());
sessionFactory = configuration.buildSessionFactory(builder.build());
} catch (Exception ex) {
throw new ExceptionInInitializerError(ex);
}
}
public Session openSession() {
return sessionFactory.openSession();
}
}
下面是在生产或本地执行期间使用的第二个类:
public class HibernateUtilForMySql implements HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties());
sessionFactory = configuration.buildSessionFactory(builder.build());
} catch (Exception ex) {
throw new ExceptionInInitializerError(ex);
}
}
HibernateUtil
下面是一个包含声明的接口
openSession()
我想要
HibernateUtilForH2
测试时使用DI注入,并且
HibernateUtilForMySql
用于在本地服务器上进行生产或执行。我该怎么做?
@TestComponent
@ConditionalOnWebApplication
但两者似乎都不起作用。我需要一个与GitLab的CI/CD设置兼容的解决方案,这样部署就可以顺利、无障碍地进行。