“Path with “WEB-INF” or “META-INF”: [WEB-INF/views/index.jsp]”
"Path with "WEB-INF" or "META-INF": [WEB-INF/views/index.jsp]"
org.springframework.scheduling.concurrent.ExecutorConfigurationSupport
ScheduledExecutorFactoryBean
ThreadPoolExecutorFactoryBean
ThreadPoolTaskExecutor
ThreadPoolTaskScheduler
@Controller返回json
使用@ResponseBody或者返回ResponseEntity类
@Controller 返回string 默认是返回view的名字,想要直接返回json则需要@ResponseBody
@GetMapping("/map")
@ResponseBody
public java.util.Map<String,String> test(){
java.util.Map<String,String> map = new HashMap<>();
map.put("hello","hello");
return map;
}
@RestController返回页面
@RestController默认返回json,想要返回页面则需要方法体返回ModelAndView
@GetMapping("foo")
public ModelAndView foo(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("foo/index");
return modelAndView;
}
spring.profiles.active和spring.config.activate.on-profile区别
spring config profile
- https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.external-config.files.profile-specific
- https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#application-properties.core.spring.config.activate.on-cloud-platform
--spring.config.name
--spring.config.location
--spring.config.import
--spring.profiles.default
--spring.profiles.active
--spring.profiles.include
--spring.config.activate.on-profile
authenticated()permitAll()
authenticated()是受保护的(也就是需要登录后访问的)
permitAll()是不受保护的(也就是无需登录即可访问的)
spring-cloud 版本跟踪
- spring-cloud https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies
- spring-cloud-alibaba https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies
- spring-cloud-tencent https://mvnrepository.com/artifact/com.tencent.cloud/spring-cloud-tencent-dependencies
application-properties
- spring-boot2.7.18 https://docs.spring.io/spring-boot/docs/2.7.18/reference/html/application-properties.html
- spring-boot https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html
- spring-cloud https://cloud.spring.io/spring-cloud-commons/reference/html/appendix.html#common-application-properties
spring-boot-dependency-versions
- https://docs.spring.io/spring-boot/docs/2.7.18/reference/html/dependency-versions.html
- https://docs.spring.io/spring-boot/docs/current/reference/html/dependency-versions.html
org.springframework.security.crypto.password.PasswordEncoder
- AbstractPasswordEncoder
- Argon2PasswordEncoder
- BCryptPasswordEncoder
- DelegatingPasswordEncoder
- LdapShaPasswordEncoder
- Md4PasswordEncoder
- MessageDigestPasswordEncoder
- NoOpPasswordEncoder
- Pbkdf2PasswordEncoder
- SCryptPasswordEncoder
- StandardPasswordEncoder
org.springframework.session.SessionRepository
- org.springframework.session.hazelcast.HazelcastIndexedSessionRepository
- org.springframework.session.jdbc.JdbcIndexedSessionRepository
- org.springframework.session.MapSessionRepository
- org.springframework.session.data.mongo.MongoIndexedSessionRepository
- org.springframework.session.data.redis.RedisIndexedSessionRepository
- org.springframework.session.data.redis.RedisSessionRepository
- org.springframework.session.data.gemfire.GemFireOperationsSessionRepository
org.springframework.session.ReactiveSessionRepository
- org.springframework.session.ReactiveMapSessionRepository
- org.springframework.session.data.mongo.ReactiveMongoSessionRepository
- org.springframework.session.data.redis.ReactiveRedisSessionRepository
org.springframework.security.web.context.SecurityContextRepository
- org.springframework.security.web.context.DelegatingSecurityContextRepository
- org.springframework.security.web.context.HttpSessionSecurityContextRepository
- org.springframework.security.web.context.NullSecurityContextRepository
- org.springframework.security.web.context.RequestAttributeSecurityContextRepository
org.springframework.core.task.TaskExecutor
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/task/TaskExecutor.html
- org.springframework.core.task.SyncTaskExecutor
- org.springframework.core.task.SimpleAsyncTaskExecutor
- org.springframework.core.task.support.TaskExecutorAdapter
- org.springframework.scheduling.concurrent.ConcurrentTaskExecutor
- org.springframework.scheduling.concurrent.ConcurrentTaskScheduler
- org.springframework.scheduling.concurrent.DefaultManagedTaskExecutor
- org.springframework.scheduling.concurrent.DefaultManagedTaskScheduler
- org.springframework.scheduling.quartz.SimpleThreadPoolTaskExecutor
- org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
- org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
org.springframework.security.web.authentication.rememberme.PersistentTokenRepository
- org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl
- org.springframework.security.web.authentication.rememberme.InMemoryTokenRepositoryImpl
org.springframework.security.config.http.SessionCreationPolicy
- ALWAYS Always create an HttpSession
- IF_REQUIRED Spring Security will only create an HttpSession if required
- NEVER Spring Security will never create an HttpSession, but will use the HttpSession if it already exists
- STATELESS Spring Security will never create an HttpSession and it will never use it to obtain the SecurityContext
org.springframework.web.servlet.HandlerInterceptor
ConversionServiceExposingInterceptor
LocaleChangeInterceptor
MappedInterceptor
ResourceUrlProviderExposingInterceptor
ThemeChangeInterceptor
UserRoleAuthorizationInterceptor
WebContentInterceptor
WebRequestHandlerInterceptorAdapter
logback
- https://logback.qos.ch/manual/layouts.html#conversionWord
- https://logback.qos.ch/apidocs/src-html/ch/qos/logback/classic/PatternLayout.html#line-39
net.logstash.logback.composite.GlobalCustomFieldsJsonProvider
net.logstash.logback.composite.accessevent.AccessEventPatternJsonProvider
net.logstash.logback.composite.loggingevent.LoggingEventPatternJsonProvider
net.logstash.logback.composite.loggingevent.LogstashMarkersJsonProvider
net.logstash.logback.composite
AbstractFormattedTimestampJsonProvider
AbstractNestedJsonProvider
AbstractSequenceJsonProvider
AbstractThreadNameJsonProvider
ContextJsonProvider
LogstashVersionJsonProvider
SequenceJsonProvider
UuidJsonProvider
net.logstash.logback.composite.accessevent
ContentLengthJsonProvider
ElapsedTimeJsonProvider
MethodJsonProvider
ProtocolJsonProvider
RemoteHostJsonProvider
RemoteUserJsonProvider
RequestedUriJsonProvider
RequestedUrlJsonProvider
RequestHeadersJsonProvider
ResponseHeadersJsonProvider
StatusCodeJsonProvider
net.logstash.logback.composite.loggingevent
AbstractThrowableClassNameJsonProvider
AbstractThrowableMessageJsonProvider
ArgumentsJsonProvider
CallerDataJsonProvider
ContextNameJsonProvider
KeyValuePairsJsonProvider
LoggerNameJsonProvider
LogLevelJsonProvider
LogLevelValueJsonProvider
MdcJsonProvider
MessageJsonProvider
RawMessageJsonProvider
RootStackTraceElementJsonProvider
StackHashJsonProvider
StackTraceJsonProvider
TagsJsonProvider
xadd myStream * field1 value1
命令讲解 xadd myStream * field1 value1
这个命令看起来像是使用xadd命令向Redis流数据结构(Stream)中添加数据。下面是对这个命令的解释:
xadd: xadd是Redis的一个命令,用于向Stream数据结构中添加新的条目。
myStream: myStream是指定的Stream名称,表示将要向哪个Stream添加数据。
*: *表示新的条目的ID将由Redis自动生成。Redis会为每个条目生成一个唯一的ID,可以用来标识该条目。
field1: field1是Stream中的字段名称,表示将要添加的数据的字段名称。
value1: value1是要添加到field1字段中的值。
综合起来,这个命令的作用是向名为myStream的Stream中添加一条新的数据,该数据包含一个字段field1,字段值为value1,并由Redis自动生成一个唯一的ID作为条目的ID。
@RequiredArgsConstructor 和 @Qualifier(“beanName”) 组合不生效
vue
npm create vite@latest my-vue-app -- --template vue-ts
cd my-vue-app/
npm install
npm run dev
/api/** 和/api/*的区别是什么?
在 Spring MVC 中,/api/** 和 /api/* 是两种不同的 URL 路径匹配模式,它们之间有一些区别:
/api/**:表示匹配以 /api/ 开头的任何路径,包括子路径。例如,/api/user、/api/user/details、/api/user/profile 等路径都会被匹配到。
/api/*:表示匹配以 /api/ 开头的一级路径,不包括子路径。也就是说,只有直接以 /api/ 后面跟着一个路径时才会被匹配到。例如,/api/user 会被匹配到,但/api/user/details、/api/user/profile 等路径不会被匹配到。
因此,/api/** 匹配更加灵活,可以匹配多级路径,而 /api/* 只能匹配一级路径。根据具体的需求和 URL 结构,您可以选择使用其中一种路径匹配模式来定义请求映射。
matching-strategy
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/pattern/PathPattern.html
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/AntPathMatcher.html
server.servlet.context-path和spring.mvc.servlet.path
server.servlet.context-path=/context-path
spring.mvc.servlet.path=/servlet-path
Then the application servlet path will become http://localhost:8080/context-path/servlet-path.
关闭特定的自动配置类
@SpringBootApplication(exclude = org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration.class)
@EnableAutoConfiguration(exclude = org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration.class)
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
PostConstruct and PreDestroy
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.CommandLineRunner;
@EventListener org.springframework.boot.context.event.SpringApplicationEvent
ApplicationContextInitializedEvent
ApplicationEnvironmentPreparedEvent
ApplicationFailedEvent
ApplicationPreparedEvent
ApplicationReadyEvent
ApplicationStartedEvent
ApplicationStartingEvent
ApplicationStartedEvent
Vary: Access-Control-Request-Method
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
mvn wrapper:wrapper -Dtype=source
mvn wrapper:wrapper -Dtype=only-script
mvn wrapper:wrapper -Dtype=script
mvn wrapper:wrapper -Dtype=source
# https://repo.huaweicloud.com/repository/maven/
MVNW_REPOURL=https://maven.aliyun.com/repository/public \
MVNW_VERBOSE=true \
mvn wrapper:wrapper -s ./settings.xml
httpServletRequest.getRequestURI()
httpServletRequest.getRequestURL()
Feature | getRequestURI() | getRequestURL() |
---|---|---|
Returns | URI path only | Full URL including scheme and host |
Type | String | StringBuffer |
Includes Domain | No | Yes |
Includes Query String | No | No |
http://example.com/app/user?id=123 | /app/user | http://example.com/app/user |
sharding.algorithm
org.apache.shardingsphere.sharding.algorithm.sharding.classbased.ClassBasedShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.datetime.IntervalShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.datetime.AutoIntervalShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.hint.HintInlineShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.inline.ComplexInlineShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.mod.ModShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.mod.HashModShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.range.VolumeBasedRangeShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.range.BoundaryBasedRangeShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.range.AbstractRangeShardingAlgorithm