diff --git a/zu-shorturl-web/pom.xml b/zu-shorturl-web/pom.xml index dd84414..567901f 100644 --- a/zu-shorturl-web/pom.xml +++ b/zu-shorturl-web/pom.xml @@ -17,6 +17,13 @@ + + + com.google.guava + guava + 31.1-jre + + cn.zzzykj diff --git a/zu-shorturl-web/src/main/java/cn/shorturl/web/controller/ShortUrlController.java b/zu-shorturl-web/src/main/java/cn/shorturl/web/controller/ShortUrlController.java index 602e633..4bf3104 100644 --- a/zu-shorturl-web/src/main/java/cn/shorturl/web/controller/ShortUrlController.java +++ b/zu-shorturl-web/src/main/java/cn/shorturl/web/controller/ShortUrlController.java @@ -20,16 +20,16 @@ import javax.annotation.Resource; @RequestMapping("/su") public class ShortUrlController { - @Resource - private ShortUrlConfig shortUrlConfig; - @Resource private ShortUrlStore store; @PostConstruct public void init() { - log.info("shortUrlConfig: {}", shortUrlConfig); log.info("store: {}", store); + String url = "https://www.baidu.com"; + String hash = store.hash(url); + log.info("hash: {}", hash); + store.add(url); } @GetMapping("/gen") diff --git a/zy-shorturl-spring-boot-starter/src/main/java/cn/shorturl/boot/starter/ShortUrlAutoConfiguration.java b/zy-shorturl-spring-boot-starter/src/main/java/cn/shorturl/boot/starter/ShortUrlAutoConfiguration.java index 277708c..7db6471 100644 --- a/zy-shorturl-spring-boot-starter/src/main/java/cn/shorturl/boot/starter/ShortUrlAutoConfiguration.java +++ b/zy-shorturl-spring-boot-starter/src/main/java/cn/shorturl/boot/starter/ShortUrlAutoConfiguration.java @@ -34,6 +34,7 @@ public class ShortUrlAutoConfiguration { } @Bean + @ConditionalOnMissingBean(ShortUrlUtil.class) @ConditionalOnBean(ShortUrlConfig.class) public ShortUrlUtil shortUrlUtil(ShortUrlConfig config) { return new ShortUrlUtil(config); @@ -41,10 +42,11 @@ public class ShortUrlAutoConfiguration { @Bean @ConditionalOnMissingBean(ShortUrlStore.class) + @ConditionalOnBean(ShortUrlUtil.class) @ConditionalOnProperty(prefix = "shorturl.store", name = "store-type", havingValue = "redis") - public ShortUrlStore redisShortUrlStore() { + public ShortUrlStore redisShortUrlStore(ShortUrlUtil util) { log.info("use short-url store: {}", RedisShortUrlStore.class.getName()); - return new RedisShortUrlStore(); + return new RedisShortUrlStore(util); } } diff --git a/zy-shorturl-store/src/main/java/cn/shorturl/store/ShortUrlStore.java b/zy-shorturl-store/src/main/java/cn/shorturl/store/ShortUrlStore.java index 8079d98..a3a83c2 100644 --- a/zy-shorturl-store/src/main/java/cn/shorturl/store/ShortUrlStore.java +++ b/zy-shorturl-store/src/main/java/cn/shorturl/store/ShortUrlStore.java @@ -9,14 +9,16 @@ import java.util.Date; /** * @author Lenovo */ -public interface ShortUrlStore { +public abstract class ShortUrlStore { + + protected ShortUrlUtil util; /** * 添加短连接(外部访问) * @param url 原链接 * @return 短连接 */ - default ShortUrl add(String url) { + public ShortUrl add(String url) { return add(url, null); } @@ -26,8 +28,8 @@ public interface ShortUrlStore { * @param expireTime 过期时间 * @return 短连接 */ - default ShortUrl add(String url, Date expireTime) { - Integer max = getConfig().getRetryMax(); + public ShortUrl add(String url, Date expireTime) { + Integer max = util.getConfig().getRetryMax(); if (max == null) { max = 5; } @@ -37,6 +39,7 @@ public interface ShortUrlStore { try { shortUrl.setHash(hash); add(shortUrl); + return shortUrl; } catch (Exception e) { e.printStackTrace(); } @@ -48,26 +51,22 @@ public interface ShortUrlStore { * 添加短链接(内部访问, 请勿外部访问) * @param shortUrl 短链接 */ - ShortUrl add(ShortUrl shortUrl); + protected abstract ShortUrl add(ShortUrl shortUrl); /** * 获取短链接 * @param hash 短链接 * @return 原链接 */ - ShortUrl get(String hash); + public abstract ShortUrl get(String hash); /** * 对URL进行Hash编码 * @param url 原链接 * @return 短链接 */ - String hash(String url); - - /** - * 获取配置对象 - * @return 配置对象 - */ - ShortUrlConfig getConfig(); + public String hash(String url) { + return util.gen(url); + } } diff --git a/zy-shorturl-store/src/main/java/cn/shorturl/store/store/JdbcShortUrlStore.java b/zy-shorturl-store/src/main/java/cn/shorturl/store/store/JdbcShortUrlStore.java index 37abbc0..d8a8749 100644 --- a/zy-shorturl-store/src/main/java/cn/shorturl/store/store/JdbcShortUrlStore.java +++ b/zy-shorturl-store/src/main/java/cn/shorturl/store/store/JdbcShortUrlStore.java @@ -1,16 +1,16 @@ package cn.shorturl.store.store; import cn.shorturl.core.ShortUrl; -import cn.shorturl.core.ShortUrlConfig; import cn.shorturl.store.ShortUrlStore; /** * @author Lenovo */ -public class JdbcShortUrlStore implements ShortUrlStore { +public class JdbcShortUrlStore extends ShortUrlStore { + @Override - public ShortUrl add(ShortUrl shortUrl) { + protected ShortUrl add(ShortUrl shortUrl) { return null; } @@ -19,13 +19,4 @@ public class JdbcShortUrlStore implements ShortUrlStore { return null; } - @Override - public String hash(String url) { - return null; - } - - @Override - public ShortUrlConfig getConfig() { - return null; - } } diff --git a/zy-shorturl-store/src/main/java/cn/shorturl/store/store/RedisShortUrlStore.java b/zy-shorturl-store/src/main/java/cn/shorturl/store/store/RedisShortUrlStore.java index 8446831..34ad253 100644 --- a/zy-shorturl-store/src/main/java/cn/shorturl/store/store/RedisShortUrlStore.java +++ b/zy-shorturl-store/src/main/java/cn/shorturl/store/store/RedisShortUrlStore.java @@ -1,16 +1,23 @@ package cn.shorturl.store.store; import cn.shorturl.core.ShortUrl; -import cn.shorturl.core.ShortUrlConfig; +import cn.shorturl.core.ShortUrlUtil; import cn.shorturl.store.ShortUrlStore; /** * @author Lenovo */ -public class RedisShortUrlStore implements ShortUrlStore { +public class RedisShortUrlStore extends ShortUrlStore { + + + + public RedisShortUrlStore(ShortUrlUtil util) { + super.util = util; + } @Override - public ShortUrl add(ShortUrl shortUrl) { + protected ShortUrl add(ShortUrl shortUrl) { + System.out.println(shortUrl); return null; } @@ -19,13 +26,4 @@ public class RedisShortUrlStore implements ShortUrlStore { return null; } - @Override - public String hash(String url) { - return null; - } - - @Override - public ShortUrlConfig getConfig() { - return null; - } }