BAEL-20869 Move remaining spring boot modules
This commit is contained in:
+14
@@ -0,0 +1,14 @@
|
||||
package com.baeldung.boot;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
@SpringBootApplication
|
||||
public class Application {
|
||||
private static ApplicationContext applicationContext;
|
||||
|
||||
public static void main(String[] args) {
|
||||
applicationContext = SpringApplication.run(Application.class, args);
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.baeldung.boot.problem;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableAutoConfiguration(exclude = ErrorMvcAutoConfiguration.class)
|
||||
@ComponentScan("com.baeldung.boot.problem")
|
||||
public class SpringProblemApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.setProperty("spring.profiles.active", "problem");
|
||||
SpringApplication.run(SpringProblemApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.baeldung.boot.problem.advice;
|
||||
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.zalando.problem.spring.web.advice.ProblemHandling;
|
||||
|
||||
@ControllerAdvice
|
||||
public class ExceptionHandler implements ProblemHandling {
|
||||
|
||||
// The causal chain of causes is disabled by default,
|
||||
// but we can easily enable it by overriding the behavior:
|
||||
@Override
|
||||
public boolean isCausalChainsEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package com.baeldung.boot.problem.advice;
|
||||
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.zalando.problem.spring.web.advice.security.SecurityAdviceTrait;
|
||||
|
||||
@ControllerAdvice
|
||||
public class SecurityExceptionHandler implements SecurityAdviceTrait {
|
||||
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.baeldung.boot.problem.configuration;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.zalando.problem.ProblemModule;
|
||||
import org.zalando.problem.validation.ConstraintViolationProblemModule;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
@Configuration
|
||||
public class ProblemDemoConfiguration {
|
||||
|
||||
@Bean
|
||||
public ObjectMapper objectMapper() {
|
||||
// In this example, stack traces support is enabled by default.
|
||||
// If you want to disable stack traces just use new ProblemModule() instead of new ProblemModule().withStackTraces()
|
||||
return new ObjectMapper().registerModules(new ProblemModule().withStackTraces(), new ConstraintViolationProblemModule());
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package com.baeldung.boot.problem.configuration;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||
import org.zalando.problem.spring.web.advice.security.SecurityProblemSupport;
|
||||
|
||||
@Configuration
|
||||
@EnableWebSecurity
|
||||
@Import(SecurityProblemSupport.class)
|
||||
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
|
||||
|
||||
@Autowired
|
||||
private SecurityProblemSupport problemSupport;
|
||||
|
||||
@Override
|
||||
protected void configure(HttpSecurity http) throws Exception {
|
||||
http.csrf().disable();
|
||||
|
||||
http.authorizeRequests()
|
||||
.antMatchers("/")
|
||||
.permitAll();
|
||||
|
||||
http.exceptionHandling()
|
||||
.authenticationEntryPoint(problemSupport)
|
||||
.accessDeniedHandler(problemSupport);
|
||||
}
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package com.baeldung.boot.problem.controller;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.baeldung.boot.problem.dto.Task;
|
||||
import com.baeldung.boot.problem.problems.TaskNotFoundProblem;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/tasks")
|
||||
public class ProblemDemoController {
|
||||
|
||||
private static final Map<Long, Task> MY_TASKS;
|
||||
|
||||
static {
|
||||
MY_TASKS = new HashMap<>();
|
||||
MY_TASKS.put(1L, new Task(1L, "My first task"));
|
||||
MY_TASKS.put(2L, new Task(2L, "My second task"));
|
||||
}
|
||||
|
||||
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public List<Task> getTasks() {
|
||||
return new ArrayList<>(MY_TASKS.values());
|
||||
}
|
||||
|
||||
@GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public Task getTasks(@PathVariable("id") Long taskId) {
|
||||
if (MY_TASKS.containsKey(taskId)) {
|
||||
return MY_TASKS.get(taskId);
|
||||
} else {
|
||||
throw new TaskNotFoundProblem(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public void updateTask(@PathVariable("id") Long id) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public void deleteTask(@PathVariable("id") Long id) {
|
||||
throw new AccessDeniedException("You can't delete this task");
|
||||
}
|
||||
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package com.baeldung.boot.problem.dto;
|
||||
|
||||
public class Task {
|
||||
|
||||
private Long id;
|
||||
private String description;
|
||||
|
||||
public Task() {
|
||||
}
|
||||
|
||||
public Task(Long id, String description) {
|
||||
this.id = id;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.baeldung.boot.problem.problems;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import org.zalando.problem.AbstractThrowableProblem;
|
||||
import org.zalando.problem.Status;
|
||||
|
||||
public class TaskNotFoundProblem extends AbstractThrowableProblem {
|
||||
|
||||
private static final URI TYPE = URI.create("https://example.org/not-found");
|
||||
|
||||
public TaskNotFoundProblem(Long taskId) {
|
||||
super(TYPE, "Not found", Status.NOT_FOUND, String.format("Task '%s' not found", taskId));
|
||||
}
|
||||
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.baeldung.scheduling.shedlock;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
@Configuration
|
||||
@EnableScheduling
|
||||
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")
|
||||
public class SchedulerConfiguration {
|
||||
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.baeldung.scheduling.shedlock;
|
||||
|
||||
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
class TaskScheduler {
|
||||
|
||||
@Scheduled(cron = "*/15 * * * *")
|
||||
@SchedulerLock(name = "TaskScheduler_scheduledTask", lockAtLeastForString = "PT5M", lockAtMostForString = "PT14M")
|
||||
public void scheduledTask() {
|
||||
System.out.println("Running ShedLock task");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user