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

在哪个网站做视频赚钱的亚马逊计划裁员1万人

在哪个网站做视频赚钱的,亚马逊计划裁员1万人,WordPress添加海报分享,制作ppt的软件电脑✅ 目标: 搜索模块支持不同内容类型(攻略、达人、游记等)每种搜索逻辑用一个策略类表示自动注册(基于注解 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/a/593686.html

相关文章:

  • 建材建设行业网站做网站从何开始
  • leetcode 3542
  • 【Python Maze Diary 1.1】迷宫算法术语
  • 大学计算机基础(Windows 7+Office 2010)第一章课后练习
  • PyTorch中int32和int64在性能上有什么差异
  • 机器学习入门:从零开始理解AI的核心引擎(附Python实战)
  • 【AI学习-comfyUI学习-简易加载器工作流(文生图)-各个部分学习-第七节-2】
  • 西安建设高端网站外星人建设的网站
  • Bugku-Web题目-文件包含
  • 给自己做的网站换首页北京大良网站建设
  • 网站的内容规划怎么写nodejs做网站还是app
  • 从“识图”到“购得”:图片搜索商品如何重构消费与供应链逻辑?
  • 通过OCR实现验证码识别
  • 33.Transformer架构
  • 环形链表快慢指针全解析:相遇必然性与多步速追击证明
  • 长沙微网站开发中小型企业网站优化推广
  • 构建一个基于Flask的URL书签管理工具
  • 底层视觉及图像增强-项目实践(十六-0-(7):从手机HDR到LED画质增强:一套底层视觉技术的跨领域实践):从奥运大屏,到手机小屏,快来挖一挖里面都有什么
  • 网站建设后期修改网站换了域名还被k站不
  • SpringApplication 和 applicationContext 比较及区别
  • CV三大核心任务:目标检测、图像分割、关键点检测
  • 牙钳防滑齿构型对牙周组织应力分布影响的研究背景
  • QT:计算器的功能实现
  • 东莞市 住房与城乡建设部网站简述网络推广的方法
  • FPGA系统架构设计实践4_SelectIO
  • 2025年--Lc232-LCR 019. 验证回文串 II-Java版
  • 马鞍山做网站的建投能源公司简介
  • 【C++进阶】STL-string的简单实现
  • 网站拒绝了您的访问电商网站开发环境
  • Kimi K2-Thinking的路线,有待商榷