当前位置: 首页 > wzjs >正文

网站文件夹名称外包网站

网站文件夹名称,外包网站,网站建设kpi考核,那些网站被k恢复是怎么做的✅ 目标: 搜索模块支持不同内容类型(攻略、达人、游记等)每种搜索逻辑用一个策略类表示自动注册(基于注解 Spring 容器)新增搜索类型时,只需添加一个类 一个注解,无需改工厂、注册表等&#x…

✅ 目标:

  • 搜索模块支持不同内容类型(攻略、达人、游记等)
  • 每种搜索逻辑用一个策略类表示
  • 自动注册(基于注解 + Spring 容器)
  • 新增搜索类型时,只需添加一个类 + 一个注解,无需改工厂、注册表等!

🛠️ 技术方案:

  • Spring Boot
  • 自定义注解 @SearchType("guide") 进行标记
  • 启动时由 Spring 自动扫描并注册到 Map<String, SearchStrategy>

📁 项目结构如下(Spring Boot)

search-system-springboot/
├── SearchSystemApplication.java
├── annotation/
│   └── SearchType.java
├── strategy/
│   ├── SearchStrategy.java
│   ├── GuideSearch.java
│   ├── ExpertSearch.java
│   ├── TravelNoteSearch.java
│   └── SearchStrategyFactory.java
└── controller/└── SearchController.java

✅ 关键文件内容如下:


🔹 SearchStrategy.java(策略接口)

package strategy;public interface SearchStrategy {void search(String keyword);
}

🔹 @SearchType 注解(用于标记策略类型)

package annotation;import java.lang.annotation.*;@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SearchType {String value(); // 类型名称,如 "guide"
}

🔹 SearchStrategyFactory.java(策略注册器)

package strategy;import annotation.SearchType;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;import java.util.HashMap;
import java.util.Map;@Component
public class SearchStrategyFactory {@Autowiredprivate ApplicationContext context;private final Map<String, SearchStrategy> strategyMap = new HashMap<>();@PostConstructpublic void init() {Map<String, Object> beans = context.getBeansWithAnnotation(SearchType.class);for (Object bean : beans.values()) {Class<?> clazz = bean.getClass();SearchType annotation = clazz.getAnnotation(SearchType.class);String type = annotation.value().toLowerCase();strategyMap.put(type, (SearchStrategy) bean);}}public SearchStrategy getStrategy(String type) {SearchStrategy strategy = strategyMap.get(type.toLowerCase());if (strategy == null) {throw new IllegalArgumentException("不支持的搜索类型: " + type);}return strategy;}
}

🔹 示例策略类 GuideSearch.java

package strategy;import annotation.SearchType;
import org.springframework.stereotype.Component;@Component
@SearchType("guide")
public class GuideSearch implements SearchStrategy {public void search(String keyword) {System.out.println("搜索攻略:" + keyword);}
}

🔹 示例策略类 ExpertSearch.java

package strategy;import annotation.SearchType;
import org.springframework.stereotype.Component;@Component
@SearchType("expert")
public class ExpertSearch implements SearchStrategy {public void search(String keyword) {System.out.println("搜索达人:" + keyword);}
}

🔹 控制器 SearchController.java

package controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import strategy.SearchStrategy;
import strategy.SearchStrategyFactory;@RestController
@RequestMapping("/search")
public class SearchController {@Autowiredprivate SearchStrategyFactory factory;@GetMappingpublic String search(@RequestParam String type, @RequestParam String keyword) {SearchStrategy strategy = factory.getStrategy(type);strategy.search(keyword);return "搜索成功:" + type + " -> " + keyword;}
}

🔹 启动类 SearchSystemApplication.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SearchSystemApplication {public static void main(String[] args) {SpringApplication.run(SearchSystemApplication.class, args);}
}

✅ 如何运行:

  1. 新建 Spring Boot 项目(Maven/Gradle 都可以)
  2. 创建上述包和类(annotationstrategycontroller
  3. 启动项目后访问:
http://localhost:8080/search?type=guide&keyword=台北夜市

输出:

搜索攻略:台北夜市

🚀 如何新增一个搜索类型?

比如新增 TravelNoteSearch

@Component
@SearchType("travelnote")
public class TravelNoteSearch implements SearchStrategy {public void search(String keyword) {System.out.println("搜索游记:" + keyword);}
}

就完事了,无需改动任何已有类!开闭原则 ✔️


http://www.dtcms.com/wzjs/498500.html

相关文章:

  • 北京网站建设石榴汇申请网站怎么申请
  • 电子商务网站建设的主要风险百度广告优化
  • 临海做网站网站空间
  • 福永附近网站建设公司成都关键词优化服务
  • 海珠五屏网站建设seo的中文是什么
  • 不知名网站开发太原seo公司
  • 东莞工业品网站建设市场营销推广方案模板
  • 中国最好的做网站高手互联网销售公司
  • 洛阳有做网站开发的吗免费大数据查询平台
  • 天津市网站建设河南seo快速排名
  • 重庆网站设计定制新站整站优化
  • 做个网站成本淘宝店铺怎么推广和引流
  • logo在线设计生成器小程序seo研究院
  • 搜索引擎优化的核心及内容搜索引擎关键词优化有哪些技巧
  • 有没有可以在线做化学实验的网站广告安装接单app
  • 商务网站的分类台州seo网站排名优化
  • 网站在哪里找国际要闻
  • 影楼网站源码武汉seo服务外包
  • 甘肃省住房和城乡建设厅安置局网站seo独立站优化
  • 做彩网站it人必看的网站
  • 网站这么做301seo关键词优化排名推广
  • 网站建设关键要做好哪些工作简述优化搜索引擎的方法
  • 健身器械网站建设案例怎么找推广渠道
  • 公司网站建设费会计处理网站统计系统
  • 上海网站设计大连seowhy
  • 网站发布之后上传文件路径变了武汉建站优化厂家
  • 滨海网站建设找哪家好百度知道首页
  • 匿名聊天网站怎么做软件制作平台
  • 做视频网站视频源百度品牌专区
  • 如何给网站添加cnzz站长统计功能代码的常用办法steam交易链接怎么改