OracleプロパティはSpringDataSourceAPIで指定されていないため、Beanの初期化後に追加のプロパティを設定する必要があります。これは、「beanpostprocessor」を実装するクラスで実行できます。また、これはSpringであるため、Beanの初期化を爆破せずに追加のプロパティを設定するには、現在のdataSourceへのハンドルを取得する必要があります。クラスの原因でAutowireを使用することはできません。そうすると、PostProcessorはそのBeanをスキップします。したがって、Beanをキャストする必要があります。次に、setConnectionPropertiesを使用して、Spring Beanでプロパティを設定するのではなく、Oracleが必要とするパラメータを初期化できます。これは機能せず、上記のエラーが発生します。
また、このトピックのタイトル「セキュリティ」->「セキュリティ」を修正する必要があります。回答を投稿するのが初めてなので、フォーマットがオフになっている場合は申し訳ありません。
@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;
}
}