Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
@ComponentScan
hello world'а был хоть в каком-нибудь пакете (не в корне), то у новичка крышу сорвёт)dependencyManagement
, включающим сторонние библиотеки), т. к. оно приводит к трудноуловимым багам. Например, вы в проекте зависите от какой-нибудь библиотеки A транзитивно зависящей от библиотеки B версии X. В spring-boot-starter-parent прописана B версии Y (отсутствие прямой и/или обратной совместимости между версиями X и Y), на которой A ломается. Увидев такое безобразие вы прописываете в dependencies
библиотеку B версии X. Таким нехитрым образом можно получить крайне неприятный и относительно трудноуловимый баг, который вылезет в недрах того же spring boot'а или его компонентов.@ComponentScan(basePackages = {"my.company"},
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = ApiGlobalMethodSecurityConfiguration.class),
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = ApiGlobalMethodSecurityConfiguration.ApiWebSecurityConfigurationAdapter.class)
}
)
@EnableAutoConfiguration(exclude = {WebMvcAutoConfiguration.class})
@ImportResource({"classpath:portal-hazelcast.xml", "classpath:springmvc-resteasy.xml"})
@EnableCaching
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer factory) {
if (factory instanceof TomcatEmbeddedServletContainerFactory) {
TomcatEmbeddedServletContainerFactory containerFactory = (TomcatEmbeddedServletContainerFactory) factory;
LOG.info("SSL {}", sslEnabled ? "enabled" : "disabled");
if (sslEnabled) {
LOG.info("Using keystore {}", getKeystorePath());
containerFactory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.setSecure(true);
connector.setScheme("https");
connector.setAttribute("keyAlias", keyAlias);
connector.setAttribute("keystorePass", keystorePass);
try {
final File file = ResourceUtils.getFile(getKeystorePath());
if (!file.exists()){
throw new FileNotFoundException(getKeystorePath() + " is not found");
}
connector.setAttribute("keystoreFile", file.getAbsolutePath());
} catch (FileNotFoundException e) {
throw new IllegalStateException("Cannot load keystore:" + e.getMessage(), e);
}
connector.setAttribute("clientAuth", "false");
connector.setAttribute("sslProtocol", "TLS");
connector.setAttribute("SSLEnabled", true);
}
});
}
}
}
};
}
Стоит ли использовать Spring Boot в вашем следующем проекте?