Oracle-egenskaperna anges inte i Spring DataSource API så du måste ställa in ytterligare egenskaper efter att bönan har initierats. Du kan göra detta med en klass som implementerar 'beanpostprocessor'. Dessutom, eftersom detta är våren måste du få ett handtag till den aktuella datakällan för att ställa in de ytterligare egenskaperna utan att spränga bönans init. Du kan inte använda Autowire i klassen eftersom PostProcessorn hoppar över den bönan. Så du måste kasta bönan. Sedan kan du använda setConnectionProperties för att initiera parametrarna som krävs av Oracle istället för att ställa in egenskaperna i Spring bean som inte kommer att fungera och ger felet som beskrivs ovan.
Du bör också fixa rubriken på detta ämne Säkerhet-->Säkerhet. Ursäkta om formateringen är avstängd eftersom jag är ny på att posta svar.
@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;
}
}