upgraded spring boot to ver 2.x

This commit is contained in:
fabio.formosa
2019-04-22 20:28:48 +02:00
parent bde642cf52
commit 139e6871bf
8 changed files with 101 additions and 91 deletions

View File

@@ -5,7 +5,7 @@
<groupId>it.fabioformosa</groupId> <groupId>it.fabioformosa</groupId>
<artifactId>quartz-manager</artifactId> <artifactId>quartz-manager</artifactId>
<version>2.0.1-SNAPSHOT</version> <version>2.1.1-SNAPSHOT</version>
<packaging>war</packaging> <packaging>war</packaging>
<name>quartz-manager</name> <name>quartz-manager</name>
@@ -13,8 +13,8 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-parent</artifactId>
<version>1.5.9.RELEASE</version> <version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository --> <relativePath/> <!-- lookup parent from repository -->
</parent> </parent>
@@ -104,14 +104,12 @@
<dependency> <dependency>
<groupId>io.rest-assured</groupId> <groupId>io.rest-assured</groupId>
<artifactId>spring-mock-mvc</artifactId> <artifactId>spring-mock-mvc</artifactId>
<version>3.0.5</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.quartz-scheduler</groupId> <groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId> <artifactId>quartz</artifactId>
<version>2.2.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
@@ -127,15 +125,16 @@
<dependency> <dependency>
<groupId>io.projectreactor</groupId> <groupId>io.projectreactor</groupId>
<artifactId>reactor-net</artifactId> <artifactId>reactor-net</artifactId>
<version>2.0.8.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.projectreactor.spring</groupId> <groupId>io.projectreactor.spring</groupId>
<artifactId>reactor-spring-context</artifactId> <artifactId>reactor-spring-context</artifactId>
<version>2.0.7.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.netty</groupId> <groupId>io.netty</groupId>
<artifactId>netty-all</artifactId> <artifactId>netty-all</artifactId>
<version>4.0.31.Final</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
@@ -163,25 +162,34 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.codehaus.gmavenplus</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>gmavenplus-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>1.5</version> <version>3.8.0</version>
<executions> <configuration>
<execution> <source>1.8</source>
<goals> <target>1.8</target>
<goal>addSources</goal> </configuration>
<goal>addTestSources</goal> </plugin>
<goal>generateStubs</goal> <!-- <plugin> -->
<goal>compile</goal> <!-- <groupId>org.codehaus.gmavenplus</groupId> -->
<goal>testGenerateStubs</goal> <!-- <artifactId>gmavenplus-plugin</artifactId> -->
<goal>testCompile</goal> <!-- <version>1.5</version> -->
<goal>removeStubs</goal> <!-- <executions> -->
<goal>removeTestStubs</goal> <!-- <execution> -->
</goals> <!-- <goals> -->
</execution> <!-- <goal>addSources</goal> -->
</executions> <!-- <goal>addTestSources</goal> -->
</plugin> <!-- <goal>generateStubs</goal> -->
<!-- <goal>compile</goal> -->
<!-- <goal>testGenerateStubs</goal> -->
<!-- <goal>testCompile</goal> -->
<!-- <goal>removeStubs</goal> -->
<!-- <goal>removeTestStubs</goal> -->
<!-- </goals> -->
<!-- </execution> -->
<!-- </executions> -->
<!-- </plugin> -->
</plugins> </plugins>
</pluginManagement> </pluginManagement>
</build> </build>

View File

@@ -1,7 +1,7 @@
package it.fabioformosa; package it.fabioformosa;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer { public class ServletInitializer extends SpringBootServletInitializer {

View File

@@ -3,6 +3,7 @@ package it.fabioformosa.quartzmanager.configuration;
import java.io.IOException; import java.io.IOException;
import java.util.Properties; import java.util.Properties;
import org.quartz.Job;
import org.quartz.JobDetail; import org.quartz.JobDetail;
import org.quartz.SimpleTrigger; import org.quartz.SimpleTrigger;
import org.quartz.Trigger; import org.quartz.Trigger;
@@ -28,66 +29,66 @@ import it.fabioformosa.quartzmanager.scheduler.TriggerMonitorImpl;
@ConditionalOnProperty(name = "quartz.enabled") @ConditionalOnProperty(name = "quartz.enabled")
public class SchedulerConfig { public class SchedulerConfig {
private static JobDetailFactoryBean createJobDetail(Class<?> jobClass) { private static JobDetailFactoryBean createJobDetail(Class<? extends Job> jobClass) {
JobDetailFactoryBean factoryBean = new JobDetailFactoryBean(); JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
factoryBean.setJobClass(jobClass); factoryBean.setJobClass(jobClass);
factoryBean.setDurability(false); factoryBean.setDurability(false);
return factoryBean; return factoryBean;
} }
private static SimpleTriggerFactoryBean createTrigger(JobDetail jobDetail, long pollFrequencyMs, private static SimpleTriggerFactoryBean createTrigger(JobDetail jobDetail, long pollFrequencyMs,
int repeatCount) { int repeatCount) {
SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean(); SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean();
factoryBean.setJobDetail(jobDetail); factoryBean.setJobDetail(jobDetail);
factoryBean.setStartDelay(0L); factoryBean.setStartDelay(0L);
factoryBean.setRepeatInterval(pollFrequencyMs); factoryBean.setRepeatInterval(pollFrequencyMs);
factoryBean.setRepeatCount(repeatCount); factoryBean.setRepeatCount(repeatCount);
factoryBean factoryBean
.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT);// in case of misfire, ignore all missed triggers and continue .setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT);// in case of misfire, ignore all missed triggers and continue
return factoryBean; return factoryBean;
} }
@Bean(name = "triggerMonitor") @Bean(name = "triggerMonitor")
public TriggerMonitor createTriggerMonitor(@Qualifier("jobTrigger") Trigger trigger) { public TriggerMonitor createTriggerMonitor(@Qualifier("jobTrigger") Trigger trigger) {
TriggerMonitor triggerMonitor = new TriggerMonitorImpl(); TriggerMonitor triggerMonitor = new TriggerMonitorImpl();
triggerMonitor.setTrigger(trigger); triggerMonitor.setTrigger(trigger);
return triggerMonitor; return triggerMonitor;
} }
@Bean @Bean
public JobDetailFactoryBean jobDetail() { public JobDetailFactoryBean jobDetail() {
return createJobDetail(SampleJob.class); return createJobDetail(SampleJob.class);
} }
@Bean @Bean
public JobFactory jobFactory(ApplicationContext applicationContext) { public JobFactory jobFactory(ApplicationContext applicationContext) {
AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory(); AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
jobFactory.setApplicationContext(applicationContext); jobFactory.setApplicationContext(applicationContext);
return jobFactory; return jobFactory;
} }
@Bean @Bean
public Properties quartzProperties() throws IOException { public Properties quartzProperties() throws IOException {
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean(); PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties")); propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
propertiesFactoryBean.afterPropertiesSet(); propertiesFactoryBean.afterPropertiesSet();
return propertiesFactoryBean.getObject(); return propertiesFactoryBean.getObject();
} }
@Bean(name = "jobTrigger") @Bean(name = "jobTrigger")
public SimpleTriggerFactoryBean sampleJobTrigger(@Qualifier("jobDetail") JobDetail jobDetail, public SimpleTriggerFactoryBean sampleJobTrigger(@Qualifier("jobDetail") JobDetail jobDetail,
@Value("${job.frequency}") long frequency, @Value("${job.repeatCount}") int repeatCount) { @Value("${job.frequency}") long frequency, @Value("${job.repeatCount}") int repeatCount) {
return createTrigger(jobDetail, frequency, repeatCount); return createTrigger(jobDetail, frequency, repeatCount);
} }
@Bean(name = "scheduler") @Bean(name = "scheduler")
public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory, public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory,
@Qualifier("jobTrigger") Trigger sampleJobTrigger) throws IOException { @Qualifier("jobTrigger") Trigger sampleJobTrigger) throws IOException {
SchedulerFactoryBean factory = new SchedulerFactoryBean(); SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setJobFactory(jobFactory); factory.setJobFactory(jobFactory);
factory.setQuartzProperties(quartzProperties()); factory.setQuartzProperties(quartzProperties());
factory.setTriggers(sampleJobTrigger); factory.setTriggers(sampleJobTrigger);
factory.setAutoStartup(false); factory.setAutoStartup(false);
return factory; return factory;
} }
} }

View File

@@ -11,6 +11,8 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import it.fabioformosa.quartzmanager.security.ComboEntryPoint; import it.fabioformosa.quartzmanager.security.ComboEntryPoint;
@@ -69,7 +71,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired @Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("admin").password("admin").roles("ADMIN"); PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
auth.inMemoryAuthentication().withUser("admin").password(encoder.encode("admin")).roles("ADMIN");
} }
} }

View File

@@ -17,9 +17,7 @@ public class AuthorityServiceImpl implements AuthorityService {
@Override @Override
public List<Authority> findById(Long id) { public List<Authority> findById(Long id) {
// TODO Auto-generated method stub Authority auth = this.authorityRepository.getOne(id);
Authority auth = this.authorityRepository.findOne(id);
List<Authority> auths = new ArrayList<>(); List<Authority> auths = new ArrayList<>();
auths.add(auth); auths.add(auth);
return auths; return auths;
@@ -27,7 +25,6 @@ public class AuthorityServiceImpl implements AuthorityService {
@Override @Override
public List<Authority> findByname(String name) { public List<Authority> findByname(String name) {
// TODO Auto-generated method stub
Authority auth = this.authorityRepository.findByName(name); Authority auth = this.authorityRepository.findByName(name);
List<Authority> auths = new ArrayList<>(); List<Authority> auths = new ArrayList<>();
auths.add(auth); auths.add(auth);

View File

@@ -37,7 +37,7 @@ public class UserServiceImpl implements UserService {
@Override @Override
@PreAuthorize("hasRole('ADMIN')") @PreAuthorize("hasRole('ADMIN')")
public User findById(Long id) throws AccessDeniedException { public User findById(Long id) throws AccessDeniedException {
User u = userRepository.findOne(id); User u = userRepository.getOne(id);
return u; return u;
} }

View File

@@ -1,7 +1,8 @@
server: server:
context-path: /quartz-manager servlet:
context-path: /quartz-manager
session.timeout : 28800
port: 8080 port: 8080
session.timeout : 28800
spring: spring:
thymeleaf: thymeleaf:

View File

@@ -1,7 +1,7 @@
-- the password hash is generated by BCrypt Calculator Generator(https://www.dailycred.com/article/bcrypt-calculator) -- the password hash is generated by BCrypt Calculator Generator(https://www.dailycred.com/article/bcrypt-calculator)
INSERT INTO user (id, username, password, firstname, lastname) VALUES (1, 'user', '$2a$04$Vbug2lwwJGrvUXTj6z7ff.97IzVBkrJ1XfApfGNl.Z695zqcnPYra', 'John', 'Doe'); INSERT INTO user (id, username, password, firstname, lastname) VALUES (1, 'user', '{bcrypt}$2a$04$Vbug2lwwJGrvUXTj6z7ff.97IzVBkrJ1XfApfGNl.Z695zqcnPYra', 'John', 'Doe');
INSERT INTO user (id, username, password, firstname, lastname) VALUES (2, 'admin', '$2a$04$Vbug2lwwJGrvUXTj6z7ff.97IzVBkrJ1XfApfGNl.Z695zqcnPYra', 'Admin', 'Admin'); INSERT INTO user (id, username, password, firstname, lastname) VALUES (2, 'admin', '{bcrypt}$2a$04$Vbug2lwwJGrvUXTj6z7ff.97IzVBkrJ1XfApfGNl.Z695zqcnPYra', 'Admin', 'Admin');
INSERT INTO authority (id, name) VALUES (1, 'ROLE_USER'); INSERT INTO authority (id, name) VALUES (1, 'ROLE_USER');
INSERT INTO authority (id, name) VALUES (2, 'ROLE_ADMIN'); INSERT INTO authority (id, name) VALUES (2, 'ROLE_ADMIN');