文档章节

注解

王静0716
 王静0716
发布于 2016/07/20 14:39
字数 328
阅读 7
收藏 0

属性

@NotNull

@NotEmpty
@Size(max=255)

@Size(min=1, max=5)

@Valid

@Email

@Email(regexp="^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$")
 

@JsonDeserialize(using = CustomDateDeserializer.class)

自定义的

@Country

Country.java

@Target({ ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = CountryConstraintValidator.class)
public @interface Country {
	String message() default "Invalid Country Geo Id";

    Class<?>[] groups() default { };

    Class<? extends Payload>[] payload() default {};

}

CountryConstraintValidator.java

public class CountryConstraintValidator implements ConstraintValidator<Country, String> {
	
	/**
	 * Injects of country cache service
	 */
	@Autowired
	private CountryService countryService;

	/* (non-Javadoc)
	 * @see javax.validation.ConstraintValidator#initialize(java.lang.annotation.Annotation)
	 */
	@Override
	public void initialize(Country constraintAnnotation) {
		
	}

	/* (non-Javadoc)
	 * @see javax.validation.ConstraintValidator#isValid(java.lang.Object, javax.validation.ConstraintValidatorContext)
	 */
	@Override
	public boolean isValid(String value, ConstraintValidatorContext context) {
		
		// allow blank input
		if (StringUtils.isEmpty(value)){
			return true;
		}
		
		List<CountryPojo> countryList = countryService.getCountries();
		if (countryList != null){
			for (CountryPojo country : countryList){
				if (country.getGeoId().equals(value)){
					return true;
				}
			}
		}
		
		return false;
	}

}

http://www.cnblogs.com/xd502djj/archive/2012/07/26/2610040.html

CountryService.java

@Service
public class CountryService {

	/**
	 * define logger object for the class
	 */
    static final Logger LOGGER = LoggerFactory.getLogger(CountryService.class);

    /**
     * Injects of geo repository
     */
    @Autowired
    private GeoRepository geoRepository;

    /**
     * Fetch all countries, and set the result to cache
     * @return country list
     * @author Kevin GUO
     */
    @Cacheable(value="cache_mongo_country", key="'country'")
    public List<CountryPojo> getCountries(){
    	LOGGER.info("cache_mongo_country[country] missed");
        List<CountryPojo> countries = null;

        List<CacheAble> geoList = geoRepository.getGeoListByGeoTypeId("COUNTRY");
        if (geoList != null){

            countries = geoList.stream().map(cacheAble -> {
                CacheAble<GeoPK, GeoData> cache = (CacheAble<GeoPK, GeoData>) cacheAble;
                CountryPojo country = new CountryPojo();
                country.setGeoId(cache.getId().getGeoId());
                country.setGeoName(cache.getData().getGeoName());
                return country;
            }).collect(Collectors.toList());

        }

        return countries;
    }
    
    /**
     * Clear the geo cache
     * 
     * @author Kevin GUO
     */
	@CacheEvict(value="cache_mongo_country", allEntries=true)
	public void reloadCacheCountry(){
		LOGGER.info("Reload All cache_mongo_country!");
	}
}

GeoRepository.java

@Repository
public class GeoRepository {

	/**
	 * Injects of mongo template
	 */
    @Autowired
    private MongoTemplate template;

    /**
     * constant name for Geo collection
     */
    private final String COLLECTION_NAME = "Geo";

    /**
     * Get Geo list by passing a geo type id
     * @param geoTypeId geo type id
     * @return geo list
     * @author Kevin GUO
     */
    public List getGeoListByGeoTypeId(String geoTypeId){
        Query query = new Query();
        Criteria criteria = new Criteria("_data.geoTypeId").is(geoTypeId);
        query.addCriteria(criteria);
        return template.find(query, GeoCache.class, COLLECTION_NAME);
    }
}

 

© 著作权归作者所有

上一篇: mongoDB之CRUD
下一篇: 时间统一
王静0716
粉丝 30
博文 63
码字总数 27883
作品 0
深圳
程序员
私信 提问

暂无文章

安卓Q | 文件存储沙箱化FAQ,你想知道的这里都有!

文件存储沙箱化作为Android Q最为重要的变更之一,对应用文件存储、访问、分享等操作都带来重大的影响,被众多开发者关注和讨论。本文邀请华为技术专家对开发者提到的重点问题进行了解答,以...

安卓绿色联盟
32分钟前
1
0
可以提高程序员效率的工具!

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 本文记录一下我在平时喜欢用的一些小工具,以便以后重装系统/换电脑的时候能快速安装...

Java3y
54分钟前
4
0
将博客搬至CSDN

https://blog.csdn.net/qq_38157006

Marhal
今天
1
0
unicode Java中求字符串长度length()和codePointCount()的区别

在计算字符串长度时,Java的两种方法length()和codePointCount()一度让我困惑,运行书上例子得到的长度值是相等的,那为什么要设定两个方法呢? 对于普通字符串,这两种方法得到的值是一样的...

泉天下
今天
2
0
uin-app 一、学习理由

选择uni-app 理由 别人的理由 1. 5+ 有HTML5+和Native.js技术,HTML5+包含常用的跨平台的几百个API,能满足常规开发需求,而Native.js把40w原生api映 射成js对象,这样js可以直接调原生。HTM...

轻轻的往前走
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部