Oracle-egenskaberne er ikke angivet i Spring DataSource API, så du skal indstille de yderligere egenskaber, efter at bønnen er startet. Du kan gøre dette med en klasse, der implementerer 'beanpostprocessor'. Da dette er forår, skal du også have styr på den aktuelle datakilde for at indstille de yderligere egenskaber uden at sprænge bønne-init'en i luften. Du kan ikke bruge Autowire i klassen, da PostProcessor vil springe den bønne over. Så du skal støbe bønnen. Så kan du bruge setConnectionProperties til at indsætte de parametre, der kræves af Oracle, i stedet for at indstille egenskaberne i Spring Bean, som ikke virker og giver den ovenfor beskrevne fejl.
Du bør også rette titlen på dette emne Sikkerhed-->Sikkerhed. Beklager, hvis formateringen er slået fra, da jeg er ny til at sende 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;
}
}