Skip to content

Instantly share code, notes, and snippets.

@sandipchitale
sandipchitale / BaseController.java
Last active August 6, 2023 00:26
Base Controller #springboot
import jakarta.servlet.ServletContext;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@sandipchitale
sandipchitale / WarOrNotWar.java
Created August 4, 2023 02:53
Running as War or Standalone Springboot App #springboot #war #notwar
@Bean
@ConditionalOnWebApplication
@ConditionalOnNotWarDeployment()
public CommandLineRunner clrNotInWar() {
return (args) -> {
System.out.println("Not running as war!");
};
}
static class OnWarDeployment extends NoneNestedConditions {
@sandipchitale
sandipchitale / ConfigurationPropertiesBindingPostProcessor.java
Created August 4, 2023 00:43
ConfigurationPropertiesBindingPostProcessor #springboot #configprop
@Component
public static class CPPP extends ConfigurationPropertiesBindingPostProcessor {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
super.setApplicationContext(applicationContext);
this.applicationContext = applicationContext;
}
@sandipchitale
sandipchitale / GenTreeRow.java
Last active July 29, 2023 15:06
Generate tree rows with emojis #tree
System.out.println(genIndent(0, "\uD83C\uDFD8\uFE0F") + " Contexts");
System.out.println(genIndent(1, "\uD83C\uDFE0") + " Context: " + contextName);
System.out.println(genIndent(2, "✅") + " Positive Matches: ");
System.out.println(genIndent(2, "⛔") + " Negative Matches (at least one did not match): " + contextName);
System.out.println(genIndent(3, "\uD83D\uDC4D") + " Condition Name: " + conditionName);
System.out.println(genIndent(4, " \uD83D\uDEC8") + " Message: " + messageAndConditionDescriptor.getMessage());
🏘️ Contexts
@sandipchitale
sandipchitale / README.md
Last active July 23, 2023 06:19
@EnableWebMvc notes #EnableWebMvc

Springboot skips auto-configure the WebMvcAutoConfiguration, because it finds that there is org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration bean, and why did that bean instantiate because the user had @EnableWebMvc annotation on a @Configuration class. This is really screwed up.

WebMvcAutoConfiguration: Matched: - @ConditionalOnClass found required classes 'jakarta.servlet.Servlet', 'org.springframework.web.servlet.DispatcherServlet', 'org.springframework.web.servlet.config.annotation.WebMvcConfigurer' (OnClassCondition) - found 'session' scope (OnWebApplicationCondition) Did not match: - @ConditionalOnMissingBean (types: org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; SearchStrategy: all) found beans of type 'org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport' org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration (OnBeanCondition)

@sandipchitale
sandipchitale / command.md
Last active July 21, 2023 19:23
spring encodepassword -a bcrypt somepassword #springcli #encodepassword
> spring help encodepassword
spring encodepassword - Encode a password for use with Spring Security

usage: spring encodepassword [options] <password to encode>

Option                    Description
------                    -----------
-a, --algorithm <String>  The algorithm to use (default: default)
@sandipchitale
sandipchitale / ServerPropertiesSslBundleRegistrar.java #SslBundleRegistrar.java
Last active August 16, 2023 14:24
SslBundleRegistrar based on classic ServerProperties #SslBundleRegistrar #ServerProperties
package sandipchitale.twowaytlsserver;
import org.springframework.boot.autoconfigure.ssl.SslBundleRegistrar;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.ssl.SslBundle;
import org.springframework.boot.ssl.SslBundleRegistry;
import org.springframework.boot.ssl.SslBundles;
import org.springframework.boot.ssl.jks.JksSslStoreBundle;
import org.springframework.boot.ssl.jks.JksSslStoreDetails;
@sandipchitale
sandipchitale / CLR.java
Created July 15, 2023 05:58
Command Line Runner #springboot
@Bean
public CommandLineRunner clr() {
return args -> {
};
}
@sandipchitale
sandipchitale / SecurityConfig.java
Last active November 4, 2023 12:22
Multiple Authentication Provider Security Config #spring-security
@Configuration
@EnableWebSecurity()
static class SecurityConfig {
public static class CustomAuthenticationProvider implements AuthenticationProvider {
private final String username;
private final String password;
private final String role;
CustomAuthenticationProvider(String username, String password, String role) {
this.username = username;