13. システム設定

13.1. Confugrationによる設定

13.1.1. Confugrationによる変更方法

CellProcessorを組み立てる際の動作を Configuration [ JavaDoc ]クラスでカスタマイズできます。

  • Configuration は、BeanMappingFactory [ JavaDoc ]から設定/取得できます。

  • BeanMappingFactoryの設定を変更した場合は、BeanMappingを CsvAnnotationBeanReaderCsvAnnoationBeanWriter に直接渡します。

 1import com.github.mygreen.supercsv.builder.BeanMapping;
 2import com.github.mygreen.supercsv.builder.BeanMappingFactory;
 3import com.github.mygreen.supercsv.builder.Configuration;
 4import com.github.mygreen.supercsv.io.CsvAnnotationBeanReader;
 5
 6import java.nio.charset.Charset;
 7import java.nio.file.Files;
 8import java.io.File;
 9
10import org.supercsv.prefs.CsvPreference;
11
12public class Sample {
13
14    // 読み込み時の指定
15    public void sampleConfiguration() {
16
17        // BeanMappingFactoryから、Configurationを取得する
18        BeanMappingFactory mappingFactory = new BeanMappingFactory();
19        Configuration config = mappingFactory.getConfiguration();
20
21        // 設定の変更
22        config.setSkipValidationOnWrite(true);
23
24        // BeanMappingオブジェクトの作成
25        BeanMapping<SampleCsv> beanMapping = mappingFactory.create(SampleCsv.class,
26            DefaultGroup.class, WriteGroup.class);  // デフォルトと書き込み用のグループクラスを指定する。
27
28        CsvAnnotationBeanReader<SampleCsv> csvReader = new CsvAnnotationBeanReader<>(
29                beanMapping, // BeanMappingのオブジェクトを直接渡します
30                Files.newBufferedReader(new File("sample.csv").toPath(), Charset.forName("Windows-31j")),
31                CsvPreference.STANDARD_PREFERENCE);
32
33        //... 以下省略
34    }
35
36}

13.1.2. Confugrationによる設定項目一覧

Configuration [ JavaDoc ]で設定可能な項目一覧を下記に示します。

表 - 13.1.1 Confugrationによる設定項目一覧

プロパティ名

説明

beanFactory

独自のTextFormatter/ConstraintProcessorFactory/ConversionProcessorFactoryなどの
インスタンスを作成するためのクラスです。
SpringBeanFactory に切り替えることで、Spring FrameworkのDI機能を使用できます。

annoationComparator

アノテーションを取得する際に、順番を一定に保つために並び変えるためのクラスです。
標準のクラス AnnotationComparator [ JavaDoc ]は、アノテーションの属性「order」を元に並び変えます。

builderResolver

各タイプの ProcessorBuilder [ JavaDoc ]のインスタンスを管理するためのクラスです。
基本的に、各種アノテーションで独自のクラスタイプに対応・カスタマイズできますが、
既存の実装を切り替えることもできます。

skipValidationOnWrite

書き込み時の値の検証を一律でスキップするかどうか設定できます。
デフォルトは false で値の検証を行います。

13.2. Javaシステムプロパティによる設定

Javaシステムプロパティによる設定可能な項目一覧を下記に示します。

javaシステムプロパティは、JVMの起動パラメータ -Dxxx=yyy または、 System.setProperty("xxx", "yyy") で指定します。

表 - 13.2.1 Javaシステムプロパティによる設定項目一覧 :widths: 30 70 :header-rows: 1

プロパティ名

説明

supercsv.annotation.jexlRestricted
[2.4+]
ExpressionLanguageJEXLImpl にて、JEXLを Restrict パーミッションでEL式を評価するか指定します。
デフォルトは true で、JexlPermissions.RESTRICTED でEL式が評価されます。
値を false に指定すると、JexlPermissions.UNRESTRICTED が設定され、EL式が制限なく評価されますが、
ただし、ELインジェクションの脆弱性に繋がる可能性があるので注意してください。
supercsv.annotation.jexlPermissions
[2.4+]
ExpressionLanguageJEXLImpl にて、JEXLを評価する際のパーミッションを指定します。
EL式中で実行/参照可能なパッケージを指定し、複数指定するときはカンマ(,)区切りで指定します。
例 . sample1.*,sample2.core.*
このプロパティは、 supercsv.annotation.jexlRestricted の値が true のときにおいて、Restrictパーミッションで実行されるときのみ有効になります。