开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情
SpringBoot
SpringBoot可以实现非网页的功能,并且由于Spring容器的存在,比一般的程序简单
DAO层
dao层的类使用Component注解使bean加入容器。加入SqlSessionTemplate,使用 @Resource(name = "sqlSessionTemplate") 的注解。使用sqlSessionTemplate的方法实现数据层的一些操作(insert,select之类的)。里面的参数填写Mapper接口或者是mapper.xml的对应方法。
Service层
1.调用Dao层 (@Autowired) ,使用Dao的数据层操作,也可以用Mapper的数据层操作。
2.要使自己的Service的添加进SpringBoot的容器,要增加init初始化
@PostConstruct
public void init(){
gZgetTask = this;
gZgetTask.gzwInfoMapper = this.gzwInfoMapper;
}
3.定时器的使用(1)在使用定时器的类上增加注解 @EnableScheduling
(2)在要定时执行的类上使用注解 @Scheduled(cron = " /10 ** *?")
.cron表达式格式:{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}
{秒数}{分钟} ==> 允许值范围: 0~59 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常
“*” 代表每隔1秒钟触发;
“,” 代表在指定的秒数触发,比如”0,15,45”代表0秒、15秒和45秒时触发任务
“-“代表在指定的范围内触发,比如”25-45”代表从25秒开始触发到45秒结束触发,每隔1秒触发1次
“/”代表触发步进(step),”/”前面的值代表初始值(““等同”0”),后面的值代表偏移量,比如”0/20”或者”/20”代表从0秒钟开始,每隔20秒钟触发1次,即0秒触发1次,20秒触发1次,40秒触发1次;”5/20”代表5秒触发1次,25秒触发1次,45秒触发1次;”10-45/20”代表在[10,45]内步进20秒命中的时间点触发,即10秒触发1次,30秒触发1次
{小时} ==> 允许值范围: 0~23 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常,占位符和秒数一样
{日期} ==> 允许值范围: 1~31 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常
{星期} ==> 允许值范围: 1~7 (SUN-SAT),1代表星期天(一星期的第一天),以此类推,7代表星期六(一星期的最后一天),不允许为空值,若值不合法,调度器将抛出SchedulerException异常
{年份} ==> 允许值范围: 1970~2099 ,允许为空,若值不合法,调度器将抛出SchedulerException异常
4.向网站发送请求
OkHttpClient client = new OkHttpClient();
//请求头
public static final MediaType JSONSTR = MediaType.parse("application/json; charset=utf-8");
RequestBody loginBody = RequestBody.create(StaticConst.JSONSTR, jsonIn.toString());
Request request = new Request.Builder().url(url).post(loginBody).build();
Response response = client.newCall(request).execute();
向指定 URL 发送POST方法的请求,返回response
5.将json数据变成list对象
List<EnterpriseInfo> enterpriseInfos1 = JSON.parseArray(json, EnterpriseInfo.class);
6.将文件打成zip包
srcFiles:文件列表 -> List
OutputStream fileOutputStream = new FileOutputStream(文件路径);
ZipOutputStream zos = new ZipOutputStream(out);
for (File srcFile : srcFiles) {
byte[] buf = new byte[1024];
zos.putNextEntry(new ZipEntry(srcFile.getName()));
int len;
FileInputStream in = new FileInputStream(srcFile);
while ((len = in.read(buf)) != -1){
zos.write(buf, 0, len);
}
zos.closeEntry();
in.close();