Các thuộc tính Oracle không được cung cấp trong API Spring DataSource, vì vậy bạn phải đặt các thuộc tính bổ sung sau khi bean được kích hoạt. Bạn có thể làm điều này với một lớp thực hiện 'beanpostprocessor'. Ngoài ra, vì đây là Spring, bạn cần phải xử lý dataSource hiện tại để thiết lập các thuộc tính bổ sung mà không làm nổ bean init. Bạn không thể sử dụng Autowire trong lớp nguyên nhân thì PostProcessor sẽ bỏ qua bean đó. Vì vậy, bạn phải đúc đậu. Sau đó, bạn có thể sử dụng setConnectionProperties để init các tham số theo yêu cầu của Oracle thay vì thiết lập các thuộc tính trong Spring bean sẽ không hoạt động và gây ra lỗi được mô tả ở trên.
Ngoài ra bạn nên sửa tiêu đề của chủ đề này là Bí mật -> Bảo mật. Xin lỗi nếu định dạng bị tắt vì tôi mới đăng câu trả lời.
@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;
}
}