Java 項目中常用注解匯總!! (自整理)

Spring框架的注解

@PostMapping("/getDetails")???post請求 ??映射到接口 ??????????????@RequestBody ?? 用來接收HTTP請求體中參數

@GetMapping("/getDetails") ????get請求 ??映射到接口 ??????????????@RequestParam ? 用來接收URL中的查詢參數

@PutMapping

@DeleteMapping

@Api(tags = "部門****") ??用于對整個控制器類進行說明,可通過tags屬性來描述該控制器的功能,方便在Swagger文檔中進行分類顯示。

@RestController???????????這表示這是一個RESTful風格的Controller 會自動將返回的數據 轉換為JSON格式??是Spring Framework 中用于標識 RESTful Web 服務的控制器(Controller)的注解之一

@RequestMapping(/system/**) ?用于映射接口的根路徑 ? ?例:http://127.0.0.1:8009/test/getDetails

@Resource ???????????????用于注入依賴實例

@ApiOperation ???????????用于對接口方法 進行說明 可通過value屬性來描述該方法的功能 方便在Swagger文檔中進行分類顯示。

@Tag(name = "部門****") ?

@Operation(summary = "獲取用戶列表")??這倆個也是api文檔注解

@PathVariable???是 Spring MVC 中用于從 URI 模板中提取變量值的注解。當你的請求路徑 中包含占位符(例如 /users/{userId}),你可以使用 @PathVariable 注解 將占位符中的值映射到方法的參數上

@GetMapping("/users/{userId}")
public ResponseEntity<User> getUserById(@PathVariable Long userId) {// 方法體
}

@Validated?????Spring Framework 中用于開啟方法級別的參數驗證的注解

@PostMapping("/createUser")
public ResponseEntity<String> createUser(@Validated @RequestBody User user) {
}

@Validated 注解用于開啟方法級別的參數驗證,而 @RequestBody 注解用于將請求體中的數據映射到 User 對象

在User類中的??@NotNull??@Email??@Size(min = 5, max = 10).....

對這些參數設置的限制信息進行校驗

@Autowired???是 Spring Framework 中用于進行依賴注入的注解。它可以被用于字段、構 造函數、Setter 方法等地方,用于告訴 Spring 容器將相應類型的 Bean 注 入到被注解的元素中

@Log(title = "部門管理", businessType = BusinessType.UPDATE)

自定義的日志記錄注解?用于記錄系統中不同操作的日志信息

title 屬性可能用于指定日志的標題或名稱,用于區分不同類型操作的日志記錄

businessType 屬性可能表示業務類型或操作類型,用于記錄操作的種類(delete,update...)

@Log(title = "部門管理", businessType = BusinessType.DELETE)

@RequiresPermissions?注解是 Apache Shiro 框架中用于進行權限控制的注解

@RequiresPermissions("user:create") 表示 createUser?方法需要用戶具有 "user:create"?權限才能被執行。如果當前用戶沒有這個權限,將會拋出 UnauthorizedException?異常

????

@PreAuthorize?是 Spring Security 框架中用于進行方法級別的訪問控制的注解之一

@ss.hasPermi('system:user:remove') 中的 @ss.hasPermi?可能是一個自定義的方法,用于檢查用戶是否有指定的權限

@Service????是 Spring Framework 中的注解之一,用于標識一個類作為服務層組件

Spring 框架將被注解的類納入 Spring 容器的管理,從而可以在應用程序的其他部分(如控制器、其他服務類等)中通過依賴注入來使用該服務。

@Override?????是 Java 中的注解,用于告訴編譯器,被注解的方法是重寫(覆蓋)了父類 (或接口)中的方法?如果使用了 @Override 注解但實際上沒有覆蓋父類的方 法,編譯器就會報錯(在impl 接口實現層)

@Transactional???是 Spring Framework 中用于聲明事務行為的注解。它可以應用于類級別或方法級別,表示被注解的方法或類將被包裝在一個事務中

@Mapper?????在 MyBatis 中,@Mapper 注解用于標識一個 Java 接口是 MyBatis 的映射 ?器。使用 @Mapper 注解告訴 MyBatis 掃描這個接口,并為它創建一個代 理對象,從而可以在代碼中調用這些方法來執行數據庫操作 主要用于 MyBatis 的映射器接口

@Repository??用于標識一個類是數據訪問對象(DAO)。它通常與持久層的實現類一起使 用,用于將數據訪問異常(例如 DataAccessException)轉換為 Spring 的數據 訪問異常體系。@Repository 注解還啟用了 Spring 的異常轉換機制,將數據 庫操作中的異常轉換為 Spring 的數據訪問異常,使得上層調用者可以更容易 地處理異常 用于 Spring 的數據訪問對象

mapper文件中 MyBatis 中用于配置 SQL 映射的注解

@Select????注解用于映射一個查詢操作,可以標注在接口的方法上或者是 XML 映射文件 的 <select> 元素上。它指定了要執行的 SQL 查詢語句

@Insert @Delete @Update?..... ?如上

@Results?和?@Result

注解一起使用,用于定義查詢結果的映射關系。@Results 注解標注在接口的方法上或者是 XML 映射文件的 <resultMap> 元素上,表示一個結果集映射。而 @Result 注解則用于指定一個屬性和數據庫字段之間的映射關系

@One?和?@Many

注解用于處理一對一和一對多的關聯關系。它們通常與 @Result 注解一起使用,以指定不同實體之間的映射關系

@Param?????是 MyBatis 中用于指定傳遞給 SQL 查詢的參數的注解。它主要用于將方法參 數與 SQL 查詢中的參數進行映射

@Options???用于配置一些可選的屬性,例如主鍵自動生成策略

@Insert("INSERT INTO users (username, password) VALUES (#{username}, #{password})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void insertUser(User user);

@SelectKey:用于配置查詢操作后獲取生成的主鍵。

@Insert("INSERT INTO users (username, password) VALUES (#{username}, #{password})")
@SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", before = false, resultType = Long.class)
void insertUserAndGetId(User user);

MyBatis 框架中的 XML 映射文件

sql.xml 文件

resultMap?標簽

這段 XML 代碼定義了一個名為 "SysUserResult" 的結果映射(resultMap),用于將數據庫查詢結果映射到 Java 對象 SysUser 中。

<resultMap type="SysUser" id="SysUserResult">: 這行代碼表示正在創建一個結果映射,指定了它的類型是 SysUser,并且賦予了它一個 ID 名稱為 "SysUserResult",以便在后續的 SQL 映射中引用。

<id property="userId" column="user_id" />: 這個部分將數據庫表中的 "user_id" 列映射到 SysUser 對象的 userId 屬性。這個屬性通常代表對象的主鍵。

<result property="deptId" column="dept_id" />: 類似地,將數據庫中的 "dept_id" 列映射到 SysUser 對象的 deptId 屬性。

<association property="dept" javaType="SysDept" resultMap="deptResult" />: 這是一個復雜類型的映射,它將 SysUser 對象中的 dept 屬性映射到另一個復雜類型對象 SysDept。這意味著在查詢 SysUser 對象時,可以將相關的 SysDept 對象作為屬性關聯起來。deptResult 是另一個 resultMap 的引用,用于映射 SysDept 對象的屬性。

<collection property="roles" javaType="java.util.List" resultMap="RoleResult" />: 這個部分定義了一個集合屬性 roles,它是 SysUser 對象的一個屬性,表示一個用戶可能有多個角色。這個集合的類型是 java.util.List,并且它的元素類型是 RoleResult resultMap 所定義的類型。這允許將查詢到的多個角色映射為一個角色列表。

總的來說,這個 <resultMap> 定義了如何將數據庫查詢的列映射到 SysUser 對象及其關聯對象(SysDept 和角色列表)的屬性上,為 MyBatis 提供了一個詳細的映射配置。

<sql>???標簽通常用于存儲可復用的 SQL 片段,以便在文件中的多個地方重用相同的 SQL 代碼段。通過這種方式,可以提高代碼的可讀性、可維護性和重用性?? ?id 屬性指定了這個 SQL 片段的標識符為 "selectDeptVo"

<select> 元素是用來執行查詢操作的,表示你希望從數據庫中檢索數據。

除此之外 還有 <update> <delete> ......

id="selectDeptById":這是這個查詢語句的唯一標識符。在 MyBatis 中,每個 SQL 查詢語句都必須有一個唯一的標識符,以便在 Java 代碼中引用它

parameterType="Long":這指定了查詢語句的輸入參數類型。在這種情況下,這個查詢期望一個類型為 Long 的參數。這通常用于傳遞查詢所需的條件,例如通過部門的ID來查詢相關信息。

resultMap="SysDeptResult":這指定了查詢結果的映射規則。在 MyBatis 中,可以使用 <resultMap> 元素定義如何將數據庫查詢結果映射到 Java 對象。SysDeptResult 可能是一個預先定義的結果映射,規定了如何將數據庫中的字段映射到 Java 對象的屬性。

@ApiImplicitParams??是一個包含多個@ApiImplicitParam的容器

@ApiImplicitParam???用于具體描述每個參數 通過"name"指定名 "value"來描述參數的含 義 ?"require" 來標識參數是否必"dataType" 來指定參數的數據類型

@slf4j ??????????進行日志統計

Lombok注解

@Data ????????? ??它可以自動生成類的常用方法,如 toString()、equals()、hashCode()、 getter 和 setter 等方法。使用 @Data 注解可以簡化代碼,并避免手動 編寫這些常用方法

Swagger注解

@ApiModel ?????????用于描述數據模型的信息

@ApiModelProperty??用于描述模型的屬性信息。在這里,我們將 e_id 字段注解為一個屬性,并指定了它的名稱為 "id",描述為 "id",并標記為必需屬性(required = true)

MyBatis框架注解

@Select ??????????用于執行搜索操作的SQL操作

@Update ??????????用于執行更新操作的SQL操作

@Insert ??????????用于執行插入操作的SQL操作

@Delete ?? ??用于執行刪除操作的SQL操作

@SelectProvider???允許使用自定義的 SQL 提供者類來動態生成 SQL 查詢語句

@UpdateProvider ??允許使用自定義的 SQL 提供者類來動態生成 SQL 查詢語句

@InsertProvider ??允許使用自定義的 SQL 提供者類來動態生成 SQL 查詢語句

@Options ?????????提供了一些選項,例如設置主鍵自增等

例子:

?1. ?@Select("SELECT * FROM company WHERE name = #{name}")List<Test> searchByExactName(@Param("name") String name);


?

2. ?@Update("UPDATE company SET name = #{name}, age = #{age}, address = #{address}, salary = #{salary} WHERE id = #{id}")int update(Test test);

@Select:

用于標識一個方法是查詢操作,該方法會執行一個 SQL 查詢語句并返回結果。

@Select 注解中的 value 屬性用于指定要執行的 SQL 查詢語句。

#{name} 是一個參數占位符,表示查詢語句中的一個參數,@Param("name") String name 表示方法的參數名為 name,并將方法中的 name 參數映射到 SQL 查詢語句中的 #{name} 占位符上。

@Update:

用于標識一個方法是更新操作,該方法會執行一個 SQL 更新語句并返回更新影響的行數。

@Update 注解中的 value 屬性用于指定要執行的 SQL 更新語句。

#{name}, #{age}, #{address}, #{salary}, #{id} 都是參數占位符,表示更新語句中的多個參數,這些參數分別對應了 Test 實體類中的字段,而在 update 方法的參數 Test test 中,這些字段會被映射到對應的參數占位符上。

1, @SpringBootApplication

包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主類上;

相關注解 ????????????????????????說明

@ComponentScan ?????????? 用來自動掃描被這些注解標識的類,最終生成ioc容器里的 bean,默認掃描范圍是@ComponentScan注解所在配置類包 及子包的類

@SpringBootConfiguration 與@Configuration作用相同,都是用來聲明當前類是一個配 置類,這里表明是springboot主類使用的配置類

@EnableAutoConfiguration 是springboot實現自動化配置的核心注解,通過這個注解把 spring應用所需的bean注入容器中

  1. @Component、@Service、@Controller、@Repository?都是將類注入到spring容器中,

@Component,@Service,@Controller,@Repository注解標注的類,這些類會被納入進spring容器中管理。

注解 ??????????說明

@Repository 持久層(dao)注入spring容器

@Service 業務邏輯層(server)注入spring容器

@Controller 控制層(controller)注入spring容器

@Component 普通pojo注入spring容器

3.@ResponseBody可以作用在方法上或類上,表示該方法的返回結果直接寫入 HTTP response body 中,而不會被解析為跳轉路徑,即不會經過視圖解析器,返回什么數據即在頁面輸入什么數據。@ResponseBody的作用其實是將java對象轉為json格式的數據。

4.@RestController

該注解是@Controller和@ResponseBody的結合體,一般用于類,作用等于在類上面添加了@ResponseBody和@Controller

5.@AutoWired、@Qualifier、@Resource

這3個注解都是基于注解方式進行自動裝配,在容器里面將查找到的bean返回,一般@AutoWired用得最多,@Qualifier則需要配合@AutoWired使用,@Resource則是可以通過名字進行自動裝配

5.1

5.2@Qualifier??當有一個接口的多個實現類時,只用@AutoWired會報錯,因為它有多個接口的實現類,不知道你要找哪一個,這個時候就需要在注入bean的時候起個名字,然后用@Qualifier注解指定哪一個bean(按照名字注入與裝配)

接口實現類1,bean注入并起名字

接口實現類2,bean注入并起名字

兩個注解的配合使用實現bean的自動裝配

5.3@Resource???該注解的使用相當于@AutoWired和@Qualifier配合使用的效果

Resource(name="sayHello")

private SayHello sayhello

6.@RequestMapping、@GetMapping、@PostMapping

注解 說明

@RequestMapping @RequestMapping(url),通過該注解就可以通過配置的url進行訪問,方式可以是get或post請求,兩種方式均可

@GetMapping @GetMapping(url) ,功能類似的,只是這個限定了只能是Get請求

@PostMapping @PostMapping(url),功能類似的,只是這個限定了只能是Post請求

  1. @Value、@ConfigurationProperties、@PropertySource

注解 說明

@Value 用于獲取bean的屬性,一般用于讀取配置文件的數據,作用在變量上

在yml配置文件設置數據變量 ?mag:dev-信息讀取在類內部 ???@Value(${msg}) ?prvite String msg;

@ConfigurationProperties 用于注入Bean屬性,然后再通過當前Bean獲取注入值,作用在類上


在yml配置文件設置數據變量

?student:name:信息age:12

讀取在類外部作用于整個類 ??

?@ConfigurationProperties(prefix="student") ?public class Student{String name;String age; ????//類的字段名必須和配置文件的字段名一致} ???? //!! 要有getter 和 setter 方法才能注入成功

@PropertySource 用于指定要讀取的配置文件,可以和@Value或@ConfigurationProperties配合使用

//PropertySource不支持yml文件讀取 ??

案例配置文件people.properties ==> ????people.name = 灰太狼 people.sex =男 ?@PropertySource(value={ "classpath: people.properties " },encoding="utf-8")@ConfigurationProperties(prefix="people")

8.@Configuration、@Bean

@Configuration作用于類上面,表明這是一個配置類,@Bean產生一個Bean對象加入Spring IOC容器

//一般這兩個注解同時配合使用

注解 說明

@Configuration 作用于類上表示這是一個配置類,可理解為用spring的時候xml里面的< beans>標簽

@Bean 產生bean對象加入容器,作用于方法,可理解為用spring的時候xml里 面的標簽

9.@RequestParam、@RequestBody、@PathVariable、@RequestHeader、@CookieValue

注解 說明

@RequestParam 獲取查詢參數。即url?name=這種形式 ????

@RequestParam主要用于接收url?后面的參數,get或post請求,只要后面的url? 有參數都可以獲取到對應的參數

@RequestParam注解有幾個比較重要的屬性,required 表示是否必須,默認為 true, 必須。defaultValue 可設置請求參數的默認值。value 為接收url的參數名(相當于 key值)。

@PathVariable 獲取路徑參數。即url/{id}這種形式。get獲取post請求均可

@RequestParam 獲取請求體數據(body),get沒有請求體,,一般用于post獲取參數 ?// 果要傳多個參數過去只能將其封裝成一個類,如果是出現了多個@RequestBody 注解訪問的時候會報400錯誤

@RequestHeader 獲取請求頭的信息

例: public String requestBody03(@RequestHeader(name = 'Content-Type') String contentType){return ?contentType;

}

@CookieValue 獲取Cookie的信息例:

@GetMapping("/demo3")public void demo3(@RequestHeader(name = "myHeader") String myHeader,@CookieValue(name = "myCookie") String myCookie) {System.out.println("myHeader=" + myHeader);System.out.println("myCookie=" + myCookie);}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166117.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166117.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166117.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

7:kotlin 數組 (Arrays)

數組是一種數據結構&#xff0c;它保存固定數量的相同類型或其子類型的值。kotlin中最常見的數組類型是對象類型數組&#xff0c;數組由array類表示。 什么時候使用 當你在kotlin中有特殊的底層需求需要滿足時&#xff0c;可以使用數組。例如&#xff0c;如果你有超出常規應用…

關于js的find的基本用法

Array.prototype.find() 是 JavaScript 的一個數組方法&#xff0c;它被用來在數組中查找一個符合條件的元素。一旦找到第一個符合條件的元素, find() 會立即返回這個元素的值&#xff0c;否則返回 undefined。 以下是 find() 方法的基本語法&#xff1a; arr.find(callback(el…

?LeetCode解法匯總1410. HTML 實體解析器

目錄鏈接&#xff1a; 力扣編程題-解法匯總_分享記錄-CSDN博客 GitHub同步刷題項目&#xff1a; https://github.com/September26/java-algorithms 原題鏈接&#xff1a;力扣&#xff08;LeetCode&#xff09;官網 - 全球極客摯愛的技術成長平臺 描述&#xff1a; 「HTML 實…

利用企業被執行人信息查詢API保障商業交易安全

前言 在當今競爭激烈的商業環境中&#xff0c;企業為了保障商業交易的安全性不斷尋求新的手段。隨著技術的發展&#xff0c;利用企業被執行人信息查詢API已經成為了一種強有力的工具&#xff0c;能夠幫助企業在商業交易中降低風險&#xff0c;提高合作的信任度。 企業被執行人…

如何使用 JavaScript 實現圖片上傳并轉換為 LaTeX 公式

在本教程中&#xff0c;我們將學習如何使用 JavaScript 創建一個上傳圖片的功能&#xff0c;并將所選圖片轉換為 LaTeX 公式。我們將使用 FileReader 對象來讀取圖片并將其轉換為 Base64 格式&#xff0c;然后利用 img2latex API 將其轉換為 LaTeX 公式。 1. HTML 結構 首先&…

SpringMVC日志追蹤筆記整理

新建logback-spring.xml <?xml version"1.0" encoding"UTF-8"?> <configuration><property name"PATH" value"./log/business"></property><appender name"STDOUT" class"ch.qos.logback…

linux進程調度(三)-進程終止

文章目錄 2.3 進程退出的幾種情況2.4 進程終止過程分析2.4.1 exit_notify函數2.4.1.1 forget_original_parent函數2.4.1.1.1 find_child_reaper函數2.4.1.1.2 find_new_reaper函數2.4.1.1.3 reparent_leader函數 2.4.1.2 do_notify_parent函數2.4.1.3 release_task函數 2.4.2 d…

GitHub桌面版

GitHub桌面版 一、GitHub 桌面版二、clone 倉庫三、更新倉庫 一、GitHub 桌面版 二、clone 倉庫 三、更新倉庫

穆桂英掛帥

《穆桂英掛帥》 作家&#xff0f;羅光記 穆桂英掛帥破敵&#xff0c; 威風凜凜立戰場。 鐵甲如云奔雷急&#xff0c; 英姿颯爽傲寒霜。 烽火連天戰鼓擂&#xff0c; 旌旗翻飛壯心驚。 刀光劍影映紅日&#xff0c; 豪情壯志天地驚。 風云變幻戰事急&#xff0c; 英勇穆桂英…

Azure Machine Learning - Azure可視化圖像分類操作實戰

目錄 一、數據準備二、創建自定義視覺資源三、創建新項目四、選擇訓練圖像五、上傳和標記圖像六、訓練分類器七、評估分類器概率閾值 八、管理訓練迭代 在本文中&#xff0c;你將了解如何使用Azure可視化頁面創建圖像分類模型。 生成模型后&#xff0c;可以使用新圖像測試該模型…

溫馨提示!辦理流量卡千萬不要填寫別人的身份證信息,切記!

可以用別人的身份證辦理流量卡嗎&#xff1f;是很多朋友都比較關注的一個問題&#xff0c;在這里明確的告訴大家一下&#xff0c;當然是不可以的。 ?  不管你是在線下營業廳辦理&#xff0c;還是在線上申請&#xff0c;都是需要提供本人的證件信息才能辦理&#xff1a; 1、…

TIDB拓撲結構

TiDB Server&#xff1a;SQL層&#xff0c;負責接受客戶端的連接&#xff0c;執行SQL解析和優化&#xff0c;最終生成分布式執行計劃。TiDB Server為無狀態的&#xff0c;可增加節點負載均衡。 PD (Placement Driver) Server&#xff1a;整個TiDB集群的元信息管理模塊&#xf…

【超詳細】手搓一個微信日記本

&#x1f380; 文章作者&#xff1a;二土電子 &#x1f338; 關注公眾號獲取更多資料&#xff01; &#x1f438; 期待大家一起學習交流&#xff01; 這里對之前的微信記事本小程序進行了重新編寫&#xff0c;增加了更加詳細的步驟描述&#xff0c;將全部圖片都改成了本地圖…

用EasyAVFilter將網絡文件或者本地文件推送RTMP出去的時候發現CPU占用好高,用的也是vcodec copy呀,什么原因?

最近同事在用EasyAVFilter集成在EasyDarwin中做視頻拉流轉推RTMP流的功能的時候&#xff0c;發現怎么做CPU占用都會很高&#xff0c;但是視頻沒有調用轉碼&#xff0c;vcodec用的就是copy&#xff0c;這是什么原因呢&#xff1f; 我們用在線的RTSP流就不會出現這種情況&#x…

SSM個性化旅游管理系統開發mysql數據庫web結構java編程計算機網頁源碼eclipse項目

一、源碼特點 SSM 個性化旅游管理系統是一套完善的信息系統&#xff0c;結合springMVC框架完成本系統&#xff0c;對理解JSP java編程開發語言有幫助系統采用SSM框架&#xff08;MVC模式開發&#xff09;&#xff0c;系統具有完整的源代碼和數據庫 &#xff0c;系統主要采用B…

raid磁盤陣列

在單機時代&#xff0c;采用單塊磁盤進行數據存儲和讀寫的方式&#xff0c;由于尋址和讀寫的時間消耗&#xff0c;導致I/O性能非常低&#xff0c;且存儲容量還會受到限制。另外&#xff0c;單塊磁盤極其容易出現物理故障&#xff0c;經常導致數據的丟失。此時&#xff0c;RAID技…

Java設計模式

&#x1f648;作者簡介&#xff1a;練習時長兩年半的Java up主 &#x1f649;個人主頁&#xff1a;程序員老茶 &#x1f64a; ps:點贊&#x1f44d;是免費的&#xff0c;卻可以讓寫博客的作者開心好久好久&#x1f60e; &#x1f4da;系列專欄&#xff1a;Java全棧&#xff0c;…

新材料制造ERP用哪個好?企業應當如何挑選適用的

有些新材料存在特殊性&#xff0c;并且在制造過程中對車間、設備、工藝、人員等方面提出更高的要求。還有些新材料加工流程復雜&#xff0c;涉及多種材料的請購、出入庫、使用和管理等環節&#xff0c;解決各個業務環節無縫銜接問題是很多制造企業面臨的管理難題。 新材料制造…

牙科診所小程序開發案例

一、背景&#xff1a; 針對傳統口腔醫療領域中口腔診所推廣難,紙質信息保存難等問題&#xff0c;設計并開發了基于微信小程序實現口腔服務助手平臺。為了給人們提供便捷&#xff0c;快速的預約方式&#xff0c;提高社會人群對口腔健康的關注力度。通過微信小程序互聯網技術&…

文旅虛擬人IP:數字時代的傳統文化推薦官

近幾年&#xff0c;隨著文旅虛擬人頻“上崗”&#xff0c;虛擬人逐漸成為了文旅品牌的一種新穎的傳統文化傳播思路。 文旅品牌定制化推出虛擬人&#xff0c;本質原因是2023旅游業全面復蘇&#xff0c;各文旅玩法同質化現象嚴重&#xff0c;在這樣的境遇下&#xff0c;文旅品牌開…