Właściwości Oracle nie są podane w API Spring DataSource, więc musisz ustawić dodatkowe właściwości po zainicjowaniu ziarna. Możesz to zrobić za pomocą klasy, która implementuje 'beanpostprocessor'. Ponadto, ponieważ jest to Spring, musisz uzyskać uchwyt do bieżącego źródła danych, aby ustawić dodatkowe właściwości bez wysadzania init fasoli. Nie możesz użyć Autowire w klasie, ponieważ wtedy PostProcessor pominie ten bean. Więc musisz rzucić fasolę. Następnie możesz użyć setConnectionProperties, aby zainicjować parametry wymagane przez Oracle, zamiast ustawiać właściwości w Spring bean, co nie zadziała i spowoduje opisany powyżej błąd.
Powinieneś także poprawić tytuł tego tematu Bezpieczeństwo-->Bezpieczeństwo. Przepraszam, jeśli formatowanie jest wyłączone, ponieważ jestem nowy w publikowaniu odpowiedzi.
@Component
public class OracleConfigurer implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException {
final Logger LOG = LoggerFactory.getLogger(OracleConfigurer.class);
if (bean instanceof DriverManagerDataSource) {
Properties properties = ((DriverManagerDataSource) bean).getConnectionProperties();
if (null == properties) properties = new Properties();
properties.put("oracle.net.encryption_types_client", "(AES256)");
properties.put("oracle.net.crypto_checksum_client", "REQUIRED");
properties.put("oracle.net.encryption_client", "REQUIRED");
DriverManagerDataSource dataSource = ((DriverManagerDataSource) bean);
dataSource.setConnectionProperties(properties);
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String name) throws
BeansException {
return bean;
}
}