De Oracle-eigenschappen worden niet gegeven in de Spring DataSource API, dus u moet de aanvullende eigenschappen instellen nadat de bean is gestart. U kunt dit doen met een klasse die 'beanpostprocessor' implementeert. Omdat dit Spring is, moet je ook een handvat krijgen voor de huidige dataSource om de extra eigenschappen in te stellen zonder de bean-init op te blazen. U kunt Autowire niet in de klasse gebruiken, want dan zal de PostProcessor die bean overslaan. Dus je moet de boon gieten. Vervolgens kunt u setConnectionProperties gebruiken om de door Oracle vereiste parameters te initiëren in plaats van de eigenschappen in de Spring bean in te stellen, wat niet werkt en de hierboven beschreven fout geeft.
U moet ook de titel van dit onderwerp aanpassen Beveiliging-->Beveiliging. Sorry als de opmaak is uitgeschakeld, want ik ben nieuw in het plaatsen van antwoorden.
@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;
}
}