Properti Oracle tidak diberikan di Spring DataSource API sehingga Anda harus mengatur properti tambahan setelah kacang dimulai. Anda dapat melakukan ini dengan kelas yang mengimplementasikan 'beanpostprocessor'. Juga, karena ini adalah Musim Semi, Anda perlu menangani dataSource saat ini untuk mengatur properti tambahan tanpa meledakkan bean init. Anda tidak dapat menggunakan Autowire di kelas karena PostProcessor akan melewatkan kacang itu. Jadi, Anda harus membuang kacangnya. Kemudian Anda dapat menggunakan setConnectionProperties untuk memulai parameter yang diperlukan oleh Oracle daripada mengatur properti di kacang Spring yang tidak akan berfungsi dan memberikan kesalahan yang dijelaskan di atas.
Anda juga harus memperbaiki judul topik ini Keamanan-->Keamanan. Maaf jika pemformatannya tidak aktif karena saya baru memposting jawaban.
@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;
}
}