As propriedades do Oracle não são fornecidas na API do Spring DataSource, portanto, você deve definir as propriedades adicionais após a inicialização do bean. Você pode fazer isso com uma classe que implementa 'beanpostprocessor'. Além disso, como este é o Spring, você precisa obter um identificador para o dataSource atual para definir as propriedades adicionais sem explodir o init do bean. Você não pode usar o Autowire na classe porque o PostProcessor pulará esse bean. Então, você tem que lançar o feijão. Em seguida, você pode usar setConnectionProperties para inicializar os parâmetros exigidos pelo Oracle em vez de definir as propriedades no bean Spring, que não funcionará e fornecerá o erro descrito acima.
Além disso, você deve corrigir o título deste tópico Segurança-->Segurança. Desculpe se a formatação está desativada, pois sou novo em postar respostas.
@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;
}
}