Свойствата на Oracle не са дадени в API на Spring DataSource, така че трябва да зададете допълнителните свойства след стартирането на bean. Можете да направите това с клас, който имплементира 'beanpostprocessor'. Освен това, тъй като това е пролет, трябва да получите манипулатор на текущия източник на данни, за да зададете допълнителните свойства, без да раздувате bean init. Не можете да използвате Autowire в класа, защото постпроцесорът ще пропусне този компонент. Така че, трябва да хвърлите боба. След това можете да използвате setConnectionProperties, за да инициирате параметрите, изисквани от Oracle, вместо да задавате свойствата в Spring bean, което няма да работи и дава грешката, описана по-горе.
Също така трябва да коригирате заглавието на тази тема Сигурност-->Сигурност. Съжалявам, ако форматирането е изключено, тъй като съм нов в публикуването на отговори.
@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;
}
}