private static enum StoreFieldSetMapper implements FieldSetMapper 这种写法少见呢 /* * Copyright 2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package example.stores; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import lombok.extern.slf4j.Slf4j; import org.springframework.batch.item.ExecutionContext; import org.springframework.batch.item.file.FlatFileItemReader; import org.springframework.batch.item.file.mapping.DefaultLineMapper; import org.springframework.batch.item.file.mapping.FieldSetMapper; import org.springframework.batch.item.file.separator.DefaultRecordSeparatorPolicy; import org.springframework.batch.item.file.transform.DelimitedLineTokenizer; import org.springframework.batch.item.file.transform.FieldSet; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.stereotype.Component; import org.springframework.validation.BindException; /** * Component initializing a hand full of Starbucks stores and persisting them through a {@link StoreRepository}. * * @author Oliver Gierke */ @Slf4j @Component public class StoreInitializer { @Autowired public StoreInitializer(StoreRepository repository) throws Exception { if (repository.count() != 0) { return; } List<Store> stores = readStores(); log.info("Importing {} stores into MongoDB…", stores.size()); repository.saveAll(stores); log.info("Successfully imported {} stores.", repository.count()); } /** * Reads a file {@code starbucks.csv} from the class path and parses it into {@link Store} instances about to * persisted. * * @return * @throws Exception */ public static List<Store> readStores() throws Exception { ClassPathResource resource = new ClassPathResource("starbucks.csv"); Scanner scanner = new Scanner(resource.getInputStream()); String line = scanner.nextLine(); scanner.close(); FlatFileItemReader<Store> itemReader = new FlatFileItemReader<Store>(); itemReader.setResource(resource); // DelimitedLineTokenizer defaults to comma as its delimiter DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); tokenizer.setNames(line.split(",")); tokenizer.setStrict(false); DefaultLineMapper<Store> lineMapper = new DefaultLineMapper<Store>(); lineMapper.setLineTokenizer(tokenizer); lineMapper.setFieldSetMapper(StoreFieldSetMapper.INSTANCE); itemReader.setLineMapper(lineMapper); itemReader.setRecordSeparatorPolicy(new DefaultRecordSeparatorPolicy()); itemReader.setLinesToSkip(1); itemReader.open(new ExecutionContext()); List<Store> stores = new ArrayList<>(); Store store = null; do { store = itemReader.read(); if (store != null) { stores.add(store); } } while (store != null); return stores; } private static enum StoreFieldSetMapper implements FieldSetMapper<Store> { INSTANCE; /* * (non-Javadoc) * @see org.springframework.batch.item.file.mapping.FieldSetMapper#mapFieldSet(org.springframework.batch.item.file.transform.FieldSet) */ @Override public Store mapFieldSet(FieldSet fields) throws BindException { Point location = new Point(fields.readDouble("Longitude"), fields.readDouble("Latitude")); Address address = new Address(fields.readString("Street Address"), fields.readString("City"), fields.readString("Zip"), location); return new Store(fields.readString("Name"), address); } } } 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 /* * Copyright 2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package example.stores; import java.util.ArrayList;import java.util.List;import java.util.Scanner; import lombok.extern.slf4j.Slf4j; import org.springframework.batch.item.ExecutionContext;import org.springframework.batch.item.file.FlatFileItemReader;import org.springframework.batch.item.file.mapping.DefaultLineMapper;import org.springframework.batch.item.file.mapping.FieldSetMapper;import org.springframework.batch.item.file.separator.DefaultRecordSeparatorPolicy;import org.springframework.batch.item.file.transform.DelimitedLineTokenizer;import org.springframework.batch.item.file.transform.FieldSet;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.core.io.ClassPathResource;import org.springframework.data.geo.Point;import org.springframework.data.mongodb.core.MongoOperations;import org.springframework.stereotype.Component;import org.springframework.validation.BindException; /** * Component initializing a hand full of Starbucks stores and persisting them through a {@link StoreRepository}. * * @author Oliver Gierke */@Slf4j@Componentpublic class StoreInitializer { @Autowired public StoreInitializer(StoreRepository repository) throws Exception { if (repository.count() != 0) { return; } List<Store> stores = readStores(); log.info("Importing {} stores into MongoDB…", stores.size()); repository.saveAll(stores); log.info("Successfully imported {} stores.", repository.count()); } /** * Reads a file {@code starbucks.csv} from the class path and parses it into {@link Store} instances about to * persisted. * * @return * @throws Exception */ public static List<Store> readStores() throws Exception { ClassPathResource resource = new ClassPathResource("starbucks.csv"); Scanner scanner = new Scanner(resource.getInputStream()); String line = scanner.nextLine(); scanner.close(); FlatFileItemReader<Store> itemReader = new FlatFileItemReader<Store>(); itemReader.setResource(resource); // DelimitedLineTokenizer defaults to comma as its delimiter DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); tokenizer.setNames(line.split(",")); tokenizer.setStrict(false); DefaultLineMapper<Store> lineMapper = new DefaultLineMapper<Store>(); lineMapper.setLineTokenizer(tokenizer); lineMapper.setFieldSetMapper(StoreFieldSetMapper.INSTANCE); itemReader.setLineMapper(lineMapper); itemReader.setRecordSeparatorPolicy(new DefaultRecordSeparatorPolicy()); itemReader.setLinesToSkip(1); itemReader.open(new ExecutionContext()); List<Store> stores = new ArrayList<>(); Store store = null; do { store = itemReader.read(); if (store != null) { stores.add(store); } } while (store != null); return stores; } private static enum StoreFieldSetMapper implements FieldSetMapper<Store> { INSTANCE; /* * (non-Javadoc) * @see org.springframework.batch.item.file.mapping.FieldSetMapper#mapFieldSet(org.springframework.batch.item.file.transform.FieldSet) */ @Override public Store mapFieldSet(FieldSet fields) throws BindException { Point location = new Point(fields.readDouble("Longitude"), fields.readDouble("Latitude")); Address address = new Address(fields.readString("Street Address"), fields.readString("City"), fields.readString("Zip"), location); return new Store(fields.readString("Name"), address); } }} &… Read More
【未解决】springboot bean init-method 不灵光呢 问题: 下列代码不会调用 init 方法 @Component //@RequestScope @Scope(scopeName = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS) public class RequestOpContext implements InitializingBean { int i = 0; public RequestOpContext(){ System.out.println("RequestOpContext()"); } public void init(){ System.out.println("init"); i=10; } public int getId(){ return i; } @Override public void afterPropertiesSet() throws Exception { init(); } } 1234567891011121314151617181920212223 @Component//@RequestScope@Scope(scopeName = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS)public class RequestOpContext implements InitializingBean { int i = 0; public RequestOpContext(){ System.out.println("RequestOpContext()"); } public void init(){ System.out.println("init"); i=10; } public int getId(){ return i; } @Override public void afterPropertiesSet() throws Exception { init(); }} &… Read More
【转】Spring Boot Hot Switch Configuration under Intellij IDEA Spring Boot Hot Switch Configuration under Intellij IDE… Read More
【转】Fortran, Matlab, Octave, Scilab计算速度比较 https://blog.csdn.net/ztguang/article/details/51913255 … Read More