Vlastnosti Oracle nejsou uvedeny v Spring DataSource API, takže po iniciaci beanu musíte nastavit další vlastnosti. Můžete to udělat pomocí třídy, která implementuje 'beanpostprocessor'. Vzhledem k tomu, že je jaro, musíte také získat ovladač k aktuálnímu zdroji dat, abyste mohli nastavit další vlastnosti, aniž byste vyhodili do vzduchu init fazole. Nemůžete použít Autowire ve třídě, protože PostProcessor tento bean přeskočí. Takže musíte hodit fazole. Potom můžete použít setConnectionProperties k inicializaci parametrů požadovaných Oracle, spíše než nastavování vlastností ve Spring beanu, který nebude fungovat a způsobí chybu popsanou výše.
Také byste měli opravit název tohoto tématu Zabezpečení-->Zabezpečení. Omlouváme se, pokud je formátování vypnuto, protože jsem v odesílání odpovědí nový.
@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;
}
}