diff --git a/spring-security-cache-control/pom.xml b/spring-security-cache-control/pom.xml
new file mode 100644
index 0000000000..787804e3fe
--- /dev/null
+++ b/spring-security-cache-control/pom.xml
@@ -0,0 +1,49 @@
+
+
+ 4.0.0
+
+ com.baeldung
+ spring-security-cache-control
+ 1.0-SNAPSHOT
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.4.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.security
+ spring-security-core
+
+
+ org.springframework.security
+ spring-security-config
+
+
+ org.springframework.security
+ spring-security-web
+
+
+ javax.servlet
+ javax.servlet-api
+ ${javax.servlet-api.version}
+
+
+
+
+ 3.1.0
+
+
+
\ No newline at end of file
diff --git a/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/ResourceEndpoint.java b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/ResourceEndpoint.java
new file mode 100644
index 0000000000..7a9860922c
--- /dev/null
+++ b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/ResourceEndpoint.java
@@ -0,0 +1,35 @@
+package com.baeldung.cachecontrol;
+
+
+import com.baeldung.cachecontrol.model.TimestampDto;
+import com.baeldung.cachecontrol.model.UserDto;
+import org.springframework.http.CacheControl;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.util.concurrent.TimeUnit;
+
+@RestController
+public class ResourceEndpoint {
+
+ @RequestMapping(value = "/users/{name}", method = RequestMethod.GET)
+ public ResponseEntity getUser(@PathVariable(value = "name") String name) {
+ return ResponseEntity.ok()
+ .cacheControl(CacheControl.maxAge(60, TimeUnit.SECONDS))
+ .body(new UserDto(name));
+ }
+
+
+ @RequestMapping(value = "/timestamp", method = RequestMethod.GET)
+ public ResponseEntity getServerTimestamp() {
+ return ResponseEntity.ok()
+ .cacheControl(CacheControl.noStore())
+ .cacheControl(CacheControl.noCache())
+ .body(new TimestampDto(LocalDateTime.now().toInstant(ZoneOffset.UTC).toEpochMilli()));
+ }
+}
diff --git a/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/app/AppRunner.java b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/app/AppRunner.java
new file mode 100644
index 0000000000..1da69f40ec
--- /dev/null
+++ b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/app/AppRunner.java
@@ -0,0 +1,12 @@
+package com.baeldung.cachecontrol.app;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class AppRunner {
+ public static void main(String[] args) {
+ SpringApplication.run(AppRunner.class, args);
+ }
+}
\ No newline at end of file
diff --git a/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/config/SpringSecurityConfig.java b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/config/SpringSecurityConfig.java
new file mode 100644
index 0000000000..789d2132f3
--- /dev/null
+++ b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/config/SpringSecurityConfig.java
@@ -0,0 +1,22 @@
+package com.baeldung.cachecontrol.config;
+
+
+import org.springframework.context.annotation.Configuration;
+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;
+
+@Configuration
+@EnableWebSecurity
+public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http
+ .authorizeRequests()
+ .anyRequest().permitAll()
+ .and().headers()
+ .defaultsDisabled()
+ .cacheControl();
+ }
+}
diff --git a/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/config/WebConfiguration.java b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/config/WebConfiguration.java
new file mode 100644
index 0000000000..decc57ec8b
--- /dev/null
+++ b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/config/WebConfiguration.java
@@ -0,0 +1,21 @@
+package com.baeldung.cachecontrol.config;
+
+import org.springframework.http.CacheControl;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+import java.util.concurrent.TimeUnit;
+
+@EnableWebMvc
+public class WebConfiguration extends WebMvcConfigurerAdapter {
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry
+ .addResourceHandler("/resources/**")
+ .addResourceLocations("/resources/")
+ .setCacheControl(CacheControl.maxAge(24, TimeUnit.HOURS));
+
+ }
+}
+
diff --git a/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/model/TimestampDto.java b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/model/TimestampDto.java
new file mode 100644
index 0000000000..cb3befacac
--- /dev/null
+++ b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/model/TimestampDto.java
@@ -0,0 +1,10 @@
+package com.baeldung.cachecontrol.model;
+
+
+public class TimestampDto {
+ public final Long timestamp;
+
+ public TimestampDto(Long timestamp) {
+ this.timestamp = timestamp;
+ }
+}
diff --git a/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/model/UserDto.java b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/model/UserDto.java
new file mode 100644
index 0000000000..a41cb31d80
--- /dev/null
+++ b/spring-security-cache-control/src/main/java/com/baeldung/cachecontrol/model/UserDto.java
@@ -0,0 +1,11 @@
+package com.baeldung.cachecontrol.model;
+
+
+public class UserDto {
+ public final String name;
+
+ public UserDto(String name) {
+ this.name = name;
+ }
+
+}