Merge pull request #9 from CodeCraftersCN/fix/#8

Adjusted the order of bean initialisations.
This commit is contained in:
Zihlu Wang
2023-08-28 15:17:55 +08:00
committed by GitHub
13 changed files with 49 additions and 13 deletions
+1 -1
View File
@@ -23,7 +23,7 @@
<parent> <parent>
<groupId>cn.org.codecrafters</groupId> <groupId>cn.org.codecrafters</groupId>
<artifactId>jdevkit</artifactId> <artifactId>jdevkit</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</parent> </parent>
<artifactId>devkit-core</artifactId> <artifactId>devkit-core</artifactId>
+1 -1
View File
@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>cn.org.codecrafters</groupId> <groupId>cn.org.codecrafters</groupId>
<artifactId>jdevkit</artifactId> <artifactId>jdevkit</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</parent> </parent>
<artifactId>devkit-utils</artifactId> <artifactId>devkit-utils</artifactId>
+1 -1
View File
@@ -23,7 +23,7 @@
<parent> <parent>
<groupId>cn.org.codecrafters</groupId> <groupId>cn.org.codecrafters</groupId>
<artifactId>jdevkit</artifactId> <artifactId>jdevkit</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</parent> </parent>
<artifactId>guid</artifactId> <artifactId>guid</artifactId>
+1 -1
View File
@@ -29,7 +29,7 @@
<groupId>cn.org.codecrafters</groupId> <groupId>cn.org.codecrafters</groupId>
<artifactId>jdevkit</artifactId> <artifactId>jdevkit</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
<inceptionYear>2023</inceptionYear> <inceptionYear>2023</inceptionYear>
<packaging>pom</packaging> <packaging>pom</packaging>
+1 -1
View File
@@ -23,7 +23,7 @@
<parent> <parent>
<groupId>cn.org.codecrafters</groupId> <groupId>cn.org.codecrafters</groupId>
<artifactId>jdevkit</artifactId> <artifactId>jdevkit</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</parent> </parent>
<artifactId>simple-jwt-authzero</artifactId> <artifactId>simple-jwt-authzero</artifactId>
+1 -1
View File
@@ -23,7 +23,7 @@
<parent> <parent>
<groupId>cn.org.codecrafters</groupId> <groupId>cn.org.codecrafters</groupId>
<artifactId>jdevkit</artifactId> <artifactId>jdevkit</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</parent> </parent>
<artifactId>simple-jwt-facade</artifactId> <artifactId>simple-jwt-facade</artifactId>
+1 -1
View File
@@ -23,7 +23,7 @@
<parent> <parent>
<groupId>cn.org.codecrafters</groupId> <groupId>cn.org.codecrafters</groupId>
<artifactId>jdevkit</artifactId> <artifactId>jdevkit</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</parent> </parent>
<artifactId>simple-jwt-jjwt</artifactId> <artifactId>simple-jwt-jjwt</artifactId>
+1 -1
View File
@@ -23,7 +23,7 @@
<parent> <parent>
<groupId>cn.org.codecrafters</groupId> <groupId>cn.org.codecrafters</groupId>
<artifactId>jdevkit</artifactId> <artifactId>jdevkit</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</parent> </parent>
<artifactId>simple-jwt-spring-boot-starter</artifactId> <artifactId>simple-jwt-spring-boot-starter</artifactId>
@@ -25,11 +25,13 @@ import com.auth0.jwt.interfaces.DecodedJWT;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.DependsOn;
/** /**
* <p> * <p>
@@ -61,6 +63,8 @@ import org.springframework.context.annotation.Bean;
@EnableConfigurationProperties(value = {SimpleJwtProperties.class}) @EnableConfigurationProperties(value = {SimpleJwtProperties.class})
@ConditionalOnClass({DecodedJWT.class, AuthzeroTokenResolver.class}) @ConditionalOnClass({DecodedJWT.class, AuthzeroTokenResolver.class})
@ConditionalOnMissingBean({TokenResolver.class}) @ConditionalOnMissingBean({TokenResolver.class})
@ConditionalOnBean(value = {GuidCreator.class}, name = "jtiCreator")
@AutoConfigureAfter(value = GuidAutoConfiguration.class)
public class AuthzeroTokenResolverAutoConfiguration { public class AuthzeroTokenResolverAutoConfiguration {
/** /**
@@ -96,7 +100,6 @@ public class AuthzeroTokenResolverAutoConfiguration {
* @return the {@link TokenResolver} instance * @return the {@link TokenResolver} instance
*/ */
@Bean @Bean
@ConditionalOnBean(value = {GuidCreator.class}, name = "jtiCreator")
public TokenResolver<DecodedJWT> tokenResolver() { public TokenResolver<DecodedJWT> tokenResolver() {
return new AuthzeroTokenResolver( return new AuthzeroTokenResolver(
jtiCreator, jtiCreator,
@@ -18,10 +18,13 @@
package cn.org.codecrafters.simplejwt.autoconfiguration; package cn.org.codecrafters.simplejwt.autoconfiguration;
import cn.org.codecrafters.guid.GuidCreator; import cn.org.codecrafters.guid.GuidCreator;
import cn.org.codecrafters.simplejwt.autoconfiguration.conditions.GuidCreatorCondition;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.SearchStrategy;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import java.util.UUID; import java.util.UUID;
@@ -32,10 +35,10 @@ import java.util.UUID;
*/ */
@Slf4j @Slf4j
@AutoConfiguration @AutoConfiguration
@ConditionalOnMissingBean(value = GuidCreator.class, name = "jtiCreator")
public class GuidAutoConfiguration { public class GuidAutoConfiguration {
@Bean @Bean
@Conditional(GuidCreatorCondition.class)
public GuidCreator<?> jtiCreator() { public GuidCreator<?> jtiCreator() {
return UUID::randomUUID; return UUID::randomUUID;
} }
@@ -19,7 +19,6 @@ package cn.org.codecrafters.simplejwt.autoconfiguration;
import cn.org.codecrafters.guid.GuidCreator; import cn.org.codecrafters.guid.GuidCreator;
import cn.org.codecrafters.simplejwt.TokenResolver; import cn.org.codecrafters.simplejwt.TokenResolver;
import cn.org.codecrafters.simplejwt.authzero.AuthzeroTokenResolver;
import cn.org.codecrafters.simplejwt.autoconfiguration.properties.SimpleJwtProperties; import cn.org.codecrafters.simplejwt.autoconfiguration.properties.SimpleJwtProperties;
import cn.org.codecrafters.simplejwt.jjwt.JjwtTokenResolver; import cn.org.codecrafters.simplejwt.jjwt.JjwtTokenResolver;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
@@ -27,6 +26,7 @@ import io.jsonwebtoken.Jws;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -63,6 +63,8 @@ import org.springframework.context.annotation.Bean;
@EnableConfigurationProperties(value = {SimpleJwtProperties.class}) @EnableConfigurationProperties(value = {SimpleJwtProperties.class})
@ConditionalOnClass({Jws.class, Claims.class, JjwtTokenResolver.class}) @ConditionalOnClass({Jws.class, Claims.class, JjwtTokenResolver.class})
@ConditionalOnMissingBean({TokenResolver.class}) @ConditionalOnMissingBean({TokenResolver.class})
@ConditionalOnBean(value = {GuidCreator.class}, name = "jtiCreator")
@AutoConfigureAfter(value = GuidAutoConfiguration.class)
public class JjwtTokenResolverAutoConfiguration { public class JjwtTokenResolverAutoConfiguration {
/** /**
@@ -98,7 +100,6 @@ public class JjwtTokenResolverAutoConfiguration {
* @return the {@link TokenResolver} instance * @return the {@link TokenResolver} instance
*/ */
@Bean @Bean
@ConditionalOnBean(value = {GuidCreator.class}, name = "jtiCreator")
public TokenResolver<Jws<Claims>> tokenResolver() { public TokenResolver<Jws<Claims>> tokenResolver() {
return new JjwtTokenResolver( return new JjwtTokenResolver(
jtiCreator, jtiCreator,
@@ -0,0 +1,29 @@
package cn.org.codecrafters.simplejwt.autoconfiguration.conditions;
import cn.org.codecrafters.guid.GuidCreator;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
import java.util.Objects;
/**
* GuidCreatorCondition
* <p>
* Created on 28 Aug 2023
*
* @author Zihlu Wang
*/
@Slf4j
public class GuidCreatorCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
final var beanFactory = Objects.requireNonNull(context.getBeanFactory());
var isContainJtiCreator = beanFactory.containsBean("jtiCreator");
if (isContainJtiCreator) {
return !(beanFactory.getBean("jtiCreator") instanceof GuidCreator<?>);
}
return true;
}
}
+1 -1
View File
@@ -23,7 +23,7 @@
<parent> <parent>
<groupId>cn.org.codecrafters</groupId> <groupId>cn.org.codecrafters</groupId>
<artifactId>jdevkit</artifactId> <artifactId>jdevkit</artifactId>
<version>1.0.0</version> <version>1.0.1</version>
</parent> </parent>
<artifactId>webcal</artifactId> <artifactId>webcal</artifactId>