Skip to content

Commit 1b8ffde

Browse files
committed
update
1 parent 3c837f6 commit 1b8ffde

File tree

10 files changed

+101
-16
lines changed

10 files changed

+101
-16
lines changed

request/spring-demo/security.http

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ GET http://{{doo_host}}/quartz/update
5858
POST http://{{doo_host}}/quartz/add
5959
Content-Type: application/x-www-form-urlencoded
6060

61-
jobName=job3&jobGroup=group3&className=com.janloong.springsecurity.quartz.job.DooJob
61+
#jobName=job3&jobGroup=group3&className=com.janloong.springsecurity.quartz.job.DooJob
62+
type=2&jobName=job_simple2&jobGroup=group3&className=com.janloong.springsecurity.quartz.job.DooJob&date=2020-07-14 17:45:00
6263

6364
###
6465
GET http://{{doo_host}}/quartz/pause?jobName=job3&jobGroup=group3

spring-demo/spring-security/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
# spring security
22
> 独立集成security学习记录
33
4+
## 启动
5+
6+
>端口: `9001`
7+
### 默认关闭
8+
>默认中间件关闭,开启需要在相应位置注释或放开注释
9+
10+
1. RabbitMq:
11+
com.janloong.springsecurity.rabbitmq.config.RabbitMqConfig#@EnableRabbit
12+
com.janloong.springsecurity.rabbitmq.config.RabbitMqConfig#@Configuration
13+
com.janloong.springsecurity.rabbitmq.controller.SendController#RabbitTemplate
14+
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
15+
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration
16+
2.
417

518
## 问题
619
前后端分离情况下,security集成后导致原有跨域配置不生效问题

spring-demo/spring-security/src/main/java/com/janloong/springsecurity/SpringSecurityApplication.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.janloong.springsecurity;
22

33
import com.janloong.common.JanloongApplication;
4-
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
54
import org.springframework.boot.autoconfigure.SpringBootApplication;
65
import org.springframework.context.annotation.Bean;
76
import org.springframework.context.annotation.ComponentScan;

spring-demo/spring-security/src/main/java/com/janloong/springsecurity/quartz/config/QuartzManager.java

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.springframework.beans.factory.annotation.Autowired;
1919
import org.springframework.context.annotation.Configuration;
2020

21+
import java.text.SimpleDateFormat;
2122
import java.util.*;
2223
import java.util.stream.Collectors;
2324

@@ -74,7 +75,7 @@ private void startJobTask(Scheduler scheduler) throws SchedulerException {
7475
//即使没有Trigger关联时,也不需要删除该JobDetail
7576
//.storeDurably()
7677
.build();
77-
//cron触发器构建
78+
//1. cron触发器构建
7879
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(DEFAULT_CRON);
7980
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
8081
//关联job, 不关联有什么影响
@@ -92,11 +93,11 @@ private void startJobTask(Scheduler scheduler) throws SchedulerException {
9293
* @author <a href ="mailto: janloongdoo@gmail.com">Janloong</a>
9394
* @date 2020 /1/19 11:46
9495
*/
95-
public void addJob(Class<? extends Job> clazz, String jobName, String jobGroup) throws SchedulerException {
96-
addJob(clazz, jobName, jobGroup, new JobDataMap());
96+
public void addJobWithCron(Class<? extends Job> clazz, String jobName, String jobGroup) throws SchedulerException {
97+
addJobWithCron(clazz, jobName, jobGroup, new JobDataMap());
9798
}
9899

99-
public void addJob(Class<? extends Job> clazz, String jobName, String jobGroup, JobDataMap jobDataMap) throws SchedulerException {
100+
public void addJobWithCron(Class<? extends Job> clazz, String jobName, String jobGroup, JobDataMap jobDataMap) throws SchedulerException {
100101
JobDetail jobDetail = JobBuilder
101102
//自定义的业务类
102103
.newJob(clazz)
@@ -109,17 +110,51 @@ public void addJob(Class<? extends Job> clazz, String jobName, String jobGroup,
109110
//.storeDurably()
110111
.build();
111112

112-
//cron触发器构建
113+
//1. cron触发器构建
113114
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(DEFAULT_CRON);
114115
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
115116
//关联job, 不关联有什么影响
116117
//.forJob(jobDetail)
117118
.withIdentity(jobName, jobGroup)
118119
.withSchedule(cronScheduleBuilder)
119120
.build();
121+
//2. calendar触发器构建
122+
//CalendarIntervalScheduleBuilder calendarIntervalSchedule = CalendarIntervalScheduleBuilder.calendarIntervalSchedule();
123+
124+
//3. simple
125+
//TriggerBuilder.newTrigger().startAt();
120126
scheduler.scheduleJob(jobDetail, cronTrigger);
121127
}
122128

129+
public void addJobWithSimple(Class<? extends Job> clazz, String jobName, String jobGroup, Map<String, Object> map) throws SchedulerException {
130+
JobDataMap jobDataMap = new JobDataMap();
131+
jobDataMap.putAll(map);
132+
JobDetail jobDetail = JobBuilder
133+
//自定义的业务类
134+
.newJob(clazz)
135+
//对于该jobDetail的一个id
136+
.withIdentity(jobName, jobGroup)
137+
//每个JobDetail内都有一个Map,包含了关联到这个Job的数据,在Job类中可以通过context获取
138+
//关联键值对
139+
.usingJobData(jobDataMap)
140+
//即使没有Trigger关联时,也不需要删除该JobDetail
141+
//.storeDurably()
142+
.build();
143+
String dateS = String.valueOf(map.get("date"));
144+
try {
145+
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
146+
Date from = format.parse(dateS);
147+
Trigger build = TriggerBuilder.newTrigger()
148+
.startAt(from)
149+
.withSchedule(SimpleScheduleBuilder.repeatMinutelyForever())
150+
.build();
151+
152+
scheduler.scheduleJob(jobDetail, build);
153+
} catch (Exception e) {
154+
log.error("时间格式化错误:{}", e.getMessage());
155+
}
156+
}
157+
123158
/**
124159
* 获取Job信息
125160
*

spring-demo/spring-security/src/main/java/com/janloong/springsecurity/quartz/controller/QuartzController.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
import org.springframework.web.bind.annotation.RequestParam;
2222
import org.springframework.web.bind.annotation.RestController;
2323

24+
import java.util.HashMap;
25+
import java.util.Map;
26+
2427
/**
2528
* The type Quartz controller.
2629
*
@@ -59,11 +62,23 @@ public ResponseResult update(String name) throws Exception {
5962
public ResponseResult add(@RequestParam String className
6063
, @RequestParam String jobName
6164
, @RequestParam String jobGroup
65+
, @RequestParam String date
66+
, @RequestParam String type
6267
) {
6368
Class<? extends Job> aClass = null;
6469
try {
6570
aClass = (Class<? extends Job>) Class.forName(className);
66-
quartzManager.addJob(aClass, jobName, jobGroup);
71+
switch (type) {
72+
case "1":
73+
default:
74+
quartzManager.addJobWithCron(aClass, jobName, jobGroup);
75+
break;
76+
case "2":
77+
Map<String, Object> map = new HashMap<>();
78+
map.put("date", date);
79+
quartzManager.addJobWithSimple(aClass, jobName, jobGroup, map);
80+
break;
81+
}
6782
} catch (ClassNotFoundException | SchedulerException e) {
6883
e.printStackTrace();
6984
}

spring-demo/spring-security/src/main/java/com/janloong/springsecurity/rabbitmq/config/RabbitMqConfig.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,14 @@
1010
import org.springframework.beans.factory.annotation.Autowired;
1111
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
1212
import org.springframework.context.annotation.Bean;
13-
import org.springframework.context.annotation.Configuration;
1413
import org.springframework.util.ErrorHandler;
1514

1615
/**
1716
* @author <a href ="mailto: janloongdoo@gmail.com">Janloong</a>
1817
* @date 2020-04-03 00:16
1918
*/
2019
@EnableRabbit
21-
@Configuration
20+
//@Configuration
2221
@Slf4j
2322
public class RabbitMqConfig {
2423

spring-demo/spring-security/src/main/java/com/janloong/springsecurity/rabbitmq/controller/SendController.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import com.janloong.common.utils.ResponseResult;
55
import com.janloong.springsecurity.rabbitmq.handler.MsgSendHandlerFactory;
6-
import org.springframework.amqp.core.AmqpAdmin;
76
import org.springframework.amqp.core.Message;
87
import org.springframework.amqp.core.MessagePropertiesBuilder;
98
import org.springframework.amqp.rabbit.core.RabbitTemplate;
@@ -23,10 +22,10 @@
2322
@RequestMapping("send")
2423
public class SendController {
2524

26-
@Autowired
27-
private AmqpAdmin amqpAdmin;
25+
//@Autowired
26+
//private AmqpAdmin amqpAdmin;
2827

29-
@Autowired
28+
//@Autowired
3029
private RabbitTemplate rabbitTemplate;
3130

3231
@Autowired

spring-demo/spring-security/src/main/java/com/janloong/springsecurity/rabbitmq/handler/ConfirmSend.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ public Object sendMsg(RabbitTemplate rabbitTemplate) {
5252
//for (int i = 0; i < 20; i++) {
5353
CorrelationData correlationData = new CorrelationData("janloongdoo");
5454
Map<String, String> map6 = Map.of("routingKey", sendRoutingKey6, "content", "hello,JanloongDoo. I'm from ");
55+
56+
//消息属性设置 持久化消息 以下方式默认为持久化模式 messageporperties MessageDeliveryMode.PERSISTENT
5557
rabbitTemplate.convertAndSend(TopicQueueConfig.TOPIC_EXCHANGE, sendRoutingKey6, map6, correlationData);
5658
CorrelationData.Confirm confirm = correlationData.getFuture().get(10, TimeUnit.SECONDS);
5759
//先于全局confirm确认响应

spring-demo/spring-security/src/main/java/com/janloong/springsecurity/selfschedule/controller/ScheduledTaskController.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010

1111
package com.janloong.springsecurity.selfschedule.controller;
1212

13+
import com.janloong.common.utils.ResponseResult;
1314
import com.janloong.springsecurity.selfschedule.entity.ScheduledTask;
1415
import com.janloong.springsecurity.selfschedule.service.ScheduleTaskService;
1516
import org.springframework.beans.factory.annotation.Autowired;
1617
import org.springframework.web.bind.annotation.RequestMapping;
17-
import org.springframework.web.bind.annotation.RestController;
1818

1919
import java.util.List;
2020

@@ -66,4 +66,20 @@ public String restart(String taskKey) {
6666
scheduledTaskService.restart(taskKey);
6767
return "restart success";
6868
}
69+
70+
/**
71+
* @author <a href ="https://blog.janloong.com">Janloong</a>
72+
* @since 2020/6/24 10:36
73+
**/
74+
@RequestMapping("/scheduleTest")
75+
//@Schedules({
76+
// @Scheduled(cron = "0/10 30-59 9 * * ? *")
77+
// , @Scheduled(cron = "0/10 1-30 11 * * ? *")
78+
// , @Scheduled(cron = "0/10 * 10,13 * * ? *")
79+
// , @Scheduled(cron = "0/10 1-50 14 * * ? *")
80+
//})
81+
public ResponseResult scheduleTest(String name) {
82+
83+
return ResponseResult.success(null);
84+
}
6985
}

spring-demo/spring-security/src/main/resources/application.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
server:
2-
port: 9001
2+
# port: 9001
3+
port: 9002
34
spring:
5+
autoconfigure:
6+
exclude:
7+
#rabbitmq
8+
- org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
9+
- org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration
410
profiles:
511
# active: dev
612
active: home

0 commit comments

Comments
 (0)