java cron表达式

java cron表达式

https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm

长度7位
秒分时日月星期年

Spring定时任务

# 每月的最后1天
@Scheduled(cron = "0 0 18 28–31 * ?")
public void doAtLastDayOfMonth() {
    final Calendar calendar = Calendar.getInstance();
    if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
        // do something here...
    }
}

说明:
Java(Spring)

*    *    *    *    *    *    *
-    -    -    -    -    -    -
|    |    |    |    |    |    |
|    |    |    |    |    |    + year [optional]
|    |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
|    |    |    |    +---------- month (1 - 12)
|    |    |    +--------------- day of month (1 - 31)
|    |    +-------------------- hour (0 - 23)
|    +------------------------- min (0 - 59)
+------------------------------ second (0 - 59)

长度6位,去掉最后的年

参考:https://www.matools.com/cron

在虚函数里面使用spring的DI

参考:https://medium.com/@citizenACLV/use-springs-dependency-injection-in-java-abstract-class-2573c1b4c0d1

实现的子类使用@Component

Factory 使用@Service, 得到实例的时候,使用@Autowired, 而不使用new

这个是关键,不然,虚基类的autowired会一直null

spring的autowired,默认是singleton,即autowired得到的都是同一个对象,

如果要每次都create new,则使用ObjectFactory,getObject每次会创建新的对象。

public class SingletonObjectFactoryBean {

    @Autowired

    private ObjectFactory<PrototypeBean> prototypeBeanObjectFactory;

    public PrototypeBean getPrototypeInstance() {

        return prototypeBeanObjectFactory.getObject();

    }

}

参考:https://www.baeldung.com/spring-inject-prototype-bean-into-singleton

使用git hooks 自动更新spring项目中 js 和css 文件版本号

spring项目中,修改了js文件后,重新部署后, 客户端经常会因为缓存了旧的js文件,导致功能异常。

一般的解决方案,是spring中引入资源处理插件,然后把相关资源文件的连接处理成类似test_xxxxxx.js的文件

本方案,再jsp中引用js时采用  test.js?v222222 ,即js文件名+?+版本号,版本号一般就是文件的修改日期。

源代码使用git管理,添加git的pre-commit hooks,在提交包含js或者css的文件修改时,扫描src目录下的相关文件,有带有文件连接的,

使用新的修改后的版本号替换。

git commit 后,会自动把相关的jsp修改后的文件,也一起提交。

https://gist.github.com/minyoad/b27fb53af3930d0093b94b823f0c2292

PS:

使用的是bash脚本,windows 只在wsl中测试过。

从firefox移除Java quick Start插件

在安装了JavaSE 6 update 10(或者以上),就会在firefox的附加组件里面看到一个“Java Quick Start”的组件,并且,只能禁用和启用,而“卸载”是灰色的,就是说不能卸载。

image

卸载办法:

打开  “控制面板”——Java——高级

如下图:

image

取消选中图中选择的项,确定,重启firefox。

就会发现,Java Quick Start扩展已经卸载了。

 

参考:http://forums.mozillazine.org/viewtopic.php?f=38&t=921325&start=0