У меня была эта точная проблема при разработке приложения Spring Boot в STS, но в конечном итоге развертывание упакованной войны в WebSphere (v.9). Основываясь на предыдущих ответах, моя ситуация была уникальной. ojdbc8.jar был в моей папке WEB-INF / lib с установленным набором родительского последнего класса, но всегда говорит, что не удалось найти подходящий драйвер.
Моя последняя проблема заключалась в том, что я использовал неправильный класс DataSource потому что я просто следил за онлайн-учебниками / примерами. Нашел подсказку благодаря тому, что Дэвид Дай прокомментировал свой собственный вопрос: Spring JDBC Не удалось загрузить класс драйвера JDBC [oracle.jdbc.driver.OracleDriver]
Также позже был найден весенний гуру пример с конкретным драйвером Oracle: https://springframework.guru/configuring-spring-boot-for-oracle/
Пример, который вызывает ошибку, используя org.springframework.jdbc.datasource.DriverManagerDataSource
на основе общих примеров .
@Config
@EnableTransactionManagement
public class appDataConfig {
\* Other Bean Defs *\
@Bean
public DataSource dataSource() {
// configure and return the necessary JDBC DataSource
DriverManagerDataSource dataSource = new DriverManagerDataSource("jdbc:oracle:thin:@//HOST:PORT/SID", "user", "password");
dataSource.setSchema("MY_SCHEMA");
return dataSource;
}
}
И исправленный exapmle с использованием oracle.jdbc.pool.OracleDataSource
:
@Config
@EnableTransactionManagement
public class appDataConfig {
/* Other Bean Defs */
@Bean
public DataSource dataSource() {
// configure and return the necessary JDBC DataSource
OracleDataSource datasource = null;
try {
datasource = new OracleDataSource();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
datasource.setURL("jdbc:oracle:thin:@//HOST:PORT/SID");
datasource.setUser("user");
datasource.setPassword("password");
return datasource;
}
}
Другие ответили отлично обоснованно, но на всякий случай это - чувствительная к производительности часть кода, Вы могли бы хотеть скомпилировать отражающие вызовы в делегатов.
я имею запись в блоге о превращении MethodBase. Вызовите в делегатов. Код находится в C#, но та же техника может быть применена к VB.NET также. Для использования этого со свойствами получите соответствующий метод "метода set" с PropertyInfo. GetSetMethod и затем создает делегата, который вызывает это. У Вас могла быть карта от имени поля для "делегирования для вызова для установки поля".
Только для повторения это только действительно необходимо, если это находится в критической по отношению к производительности части кода. Иначе Вы могли бы все еще хотеть создать Dictionary<string, PropertyInfo>
, чтобы не звонить GetProperty
много раз, но о шаге для преобразования его в делегата, вероятно, не стоит вызывать беспокойство.
Я не могу полагать, что другие плакаты сказали Вам использовать отражение. VB как функция CallByName, которая делает точно, что Вы хотите.