E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
spring学习
Spring学习
——对@Resource和@Service使用的理解和总结
慢慢的对这两个注解有了自己的一点小理解。A是不使用这两个注解进行怎样的开发,使用注解后(B)会发生什么。通过对比就可以看出这两个注解的大致过程和原理。A:下面举一个例子,此时没有使用注解,纯是用xml配置来实现,比较麻烦啊但是好理解。这是一个最简单的ssm框架。mybatis在cn.liu.mapper包下使用的是接口绑定方案。为了让Spring知道,并且更好的管理此接口。在Spring配置文件中
唯有一片炙热
·
2024-09-08 05:11
javaEE基础学习
Java学习
Spring学习
笔记——开篇
整体架构Spring核心容器Beans包含访问配置文件,通过Spring容器创建和管理Bean,进行依赖注入和控制反转操作相关所有类。Core包含Spring框架的基本核心工具类,Spring其它组件均需要使用该包,是其它组件的基本核心。Context为Spring核心提供扩展,能够找到使用SpringApplicationContext特性时需要的所有类;JNDI特性时需要的所有类;UI方面模板
weixin_30699741
·
2024-08-30 22:11
Spring 用法学习总结(三)之 AOP
Spring学习
7bean的生命周期8AOP面向切面编程8.1AOP相关术语8.2AOP使用7bean的生命周期bean的生命周期主要为bean实例化、bean属性赋值、bean初始化、销毁bean,其中在实例化和初始化前后都使用后置处理器方法
花落随风轻飘舞
·
2024-02-20 21:41
Spring
系列
spring
学习
java
Spring学习
笔记(三)--Spring中的Bean的管理
一、什么是BeanBean是注册到Spring容器中的Java类,控制反转和依赖注入都是通过Bean实现的,任何一个Java类都可以是一个Bean。Bean由Spring进行管理,可以通过xml文件对bean进行配置和管理。二、BeanFactory接口和ApplicationContext接口;Spring提供了几个BeanFactory接口的实现类,其中最常用的是XmlBeanFactory,
玛卡巴卡yang
·
2024-02-19 21:17
JavaEE企业级应用软件开发
spring
学习
笔记
Spring学习
笔记(二)Spring的控制反转(设计原则)与依赖注入(设计模式)
一、控制反转:缩写IoC是一种设计原则,降低程序代码之间的耦合度对象由Ioc容器统一管理,当程序需要使用对象时直接从IoC容器中获取。这样对象的控制权就从应用程序转移到了IoC容器二、依赖注入:缩写DI依赖注入是一种消除类之间依赖关系的设计模式。例如,A类要依赖B类,A类不再直接创建B类,而是把这种依赖关系配置在外部xml文件(或javaconfig文件)中,然后由Spring容器根据配置信息创建
玛卡巴卡yang
·
2024-02-19 21:39
JavaEE企业级应用软件开发
spring
学习
【
Spring学习
】过滤器和拦截器
1、认识过滤器(Filter)1.1、过滤器的定义过滤器是JavaWeb的三大组件之一,是实现Filter接口的Java类。过滤器是实现对请求资源(jsp、servlet、html)的过滤功能,是一个运行在服务器的程序,优先于请求资源(jsp、servlet、html)之前执行。当浏览器发送请求给服务器的时候,先执⾏过滤器,然后才访问Web的资源。服务器响应Response,从Web资源抵达浏览器
pbinlog
·
2024-02-13 02:29
Spring学习
java
spring
【
Spring学习
】Spring Data Redis:RedisTemplate、Repository、Cache注解
1,spring-data-redis官网1)特点提供了对不同Redis客户端的整合(Lettuce和Jedis)提供了RedisTemplate统一API来操作Redis支持Redis的发布订阅模型支持Redis哨兵和Redis集群支持基于Lettuce的响应式编程支持基于JDK、JSON、字符串、Spring独享的数据序列化及反序列化支持基于Redis的JDKCollection实现2,Red
兔兔西
·
2024-02-12 12:35
spring
redis
Spring用法学习总结(二)
Spring学习
5基于注解方式创建对象6基于注解注入属性5基于注解方式创建对象注解是代码的特殊标记,可以简化xml配置,格式:@注解名称(属性名称=属性值),可以作用在类、方法、属性上以下注解都可以创建
花落随风轻飘舞
·
2024-02-08 23:50
Spring系列
spring
学习
java
Spring用法学习总结(一)
Spring学习
1Spring框架概述2Spring容器3基于XML方式创建对象4基于XML方式注入属性4.1通过set方法注入属性4.2通过构造器注入属性4.3使用p命名空间注入属性4.4注入bean
花落随风轻飘舞
·
2024-02-08 23:43
Spring系列
spring
学习
java
黑马程序员SSM-
Spring学习
笔记
学完Spring之后是SpringMVC文章目录前言一、注解开发1.1注解开发定义bean1.2纯注解开发1.3bean作用范围1.4依赖注入-自动装配1.5第三方bean管理1.6总结二、Spring整合MyBatis2.1.产生SqlSessionFactoryBean2.产生MapperScannerConfigurer三、Spring整合Junit四、AOP4.1AOP入门案例4.2AOP
恰好风扬了帆
·
2024-02-07 01:34
spring
java
学习
后端
Spring学习
笔记(一)-spring概述及下载
Spring学习
笔记(一)-spring概述及下载一、概述二、三层架构三、Spring框架的主要优点四、Spring的体系结构五、Spring的下载和配置六、测试Spring一、概述 Spring框架是一个开放源代码的
编程小白_C
·
2024-02-03 17:58
spring
spring概述及下载
spring
java
Spring学习
笔记
Spring学习
笔记以前我们调用对象时,对象通常是调用者主动new出来而现在是IOC容器来完成,就像哆啦A梦的百宝箱负责管理Bean对象。一:Spring的基本概述IOC容器1.什么是IOC容器?
江南一棵树。
·
2024-02-03 17:56
Spring
spring
java
struts
2018-10-28
Spring学习
笔记(四)
一.bean的注解要只用注解,必须要开启注解驱动,Spring容器在启动的时候,会自动的创建纳入Spring管理的bean对象,当Spring容器扫描到的时候,会去Spring容器当中管理的bean对应的类当中查看相匹配的注解(一)Resource注解Resource注解既可以加在属性上面,也可以记在set方法上面1.Resource注解加在属性上面packagecom.csii.dao;publ
惜小八
·
2024-02-02 10:31
手写Spring框架之: HelloSpring
代码路径:GitHub-tanglijiong/MiniSpringFramework:用于
spring学习
和演示1.项目结构包介绍core:核心功能,如Bean的创建和管理beans:与Bean定义和处理相关的类
薛定谔的zhu
·
2024-02-02 08:22
spring
java
后端
Spring学习
3--基于注解管理Bean
1、开启组件扫描Spring默认不使用注解装配Bean,因此我们需要在Spring的XML配置中,通过context:component-scan元素开启SpringBeans的自动扫描功能。开启此功能后,Spring会自动从扫描指定的包(base-package属性设置)及其子包下的所有类,如果类上使用了@Component注解,就将该类装配到容器中。在使用context:component-s
夜阑卧听风吹雨,铁马冰河入梦来
·
2024-01-31 01:14
Spring
spring
学习
rpc
Spring学习
(六)—— SpringJDBC与MyBatis
文章目录SpringJDBC一般步骤1导入maven依赖包2添加Spring配置文件,配置JdbcTemplate3调用JdbcTemplate的方法访问数据库MyBatis一般步骤1导包2添加配置文件SqlMapConfig.xml3构建实体类4写映射文件Mapper.xml5调用mybatisSqlSession提供的方法访问数据库小知识Google对MyBatis的改进SpringJDBCS
Growing_Snake
·
2024-01-30 15:58
Java
Spring学习
总结
1.SpringBean生命周期实例化->设置属性->调用BeranNameAware方法setBeanName->调用beanFactoryAware方法setbeanFactory->调用ApplicationContextAware的setApplicationContext方法->调用BeanPostProcess的前置方法-->调用intializingBean的afterPropert
MysticBoy
·
2024-01-29 09:32
Spring学习
第2篇:IoC控制反转 与 DI依赖注入
大家家好,我是一名网络怪咖,北漂五年。相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知Spring重要性,现在普遍都使用SpringBoot来开发,面试的时候SpringBoot原理也是经常会问到,SpringBoot是为了简化Spring开发,但是底层仍然是Spring。如果不了解Spring源码,那就更别提SpringBoot源码了,接下来我准备用两个月时间,从基础到源码彻彻底
怪 咖@
·
2024-01-29 07:23
#
Spring
spring
学习
java
spring学习
8-log4j.properties 详解与配置步骤
一、入门实例1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下2、src同级创建并设置log4j.properties###设置###log4j.rootLogger=debug,stdout,D,E###输出信息到控制抬###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender
前端歌谣
·
2024-01-27 12:01
log4j
spring
学习
Spring学习
笔记 关于Spring创建Bean的模式-Singleton(单例模式)和Prototype
刚开始接触Spring的时候一些基础的教学在说到Bean的创建时会提到Spring的单例模式,就是说默认情况下Spring中定义的Bean是以单例模式创建的。如果以前了解设计模式中的单例模式的话很容易对这种说法产生先入为主的印象。事实上,Spring中的单例模式还有许多需要注意的地方。在GoF中的单例模式是指一个ClassLoader中只存在类一个实例。而在Spring中的单例实际上更确切的说应该
Arvin_Rong
·
2024-01-26 01:30
J2EE
All
THINGS
about
JAVA
Spring
Spring学习
笔记 关于spring 2.x中dependency-check标签与Spring3中的实现方式
在Bean被创建时Bean的属性(property)如果在配置文件Bean的定义中没有进行初始化赋值,默认情况下Spring对于没有进行初始化的属性(property)是不做检查的。但是很多情况下会要求Bean特定的属性必须进行初始化赋值,在Spring2.x中通过在bean标签中使用dependency-check属性设定由Spring进行强制检查的方式。denpendency-check属性有
Arvin_Rong
·
2024-01-26 01:30
All
THINGS
about
JAVA
Spring
J2EE
Spring学习
笔记 使用Static Factory(静态工厂类)创建Bean
普通定义Bean并且进行初始化的方法一般通过property(属性)的setter方法或者构造方法进行。例如这种定义创建Bean相当于使用newcom.csdn.net.arvin.BeanClass();的方法来新建Bean对象。在实际应用中很多情况下还会使用设计模式中的工厂模式来创建对象。使用静态工厂类即调用工厂类中的静态方法,比如publicstatic类名getInstance()方法返回
Arvin_Rong
·
2024-01-26 01:29
All
THINGS
about
JAVA
Spring
bean
spring
class
string
设计模式
encoding
Spring学习
(三) Spring容器实现原理浅析
第二章写的是springxml一些标签及使用,标签较多整理起来较慢~就先写三了【自己对一些标签也不是很了解,真的需在查】一、Spring启动时可以分为两个阶段:容器启动阶段、Bean实例化阶段。(每个阶段加入了扩展点,方便我们进行自定义扩展)1、容器启动阶段容器启动时,采用某种途径加载ConfigurationMetaData(Bean元数据),在大部分情况下,容器采用工具类(BeanDefini
jjjjxd
·
2024-01-20 15:09
(设置非自定义命名空间)
Spring学习
第五天
非自定义命名空间首先引入对应命名空间的标签在引入对应schemaLocation的映射(一对)//对应schemaLocation的映射
y3131954546
·
2024-01-20 02:54
学习
(Bean的实例化配置)
Spring学习
第四天
Bean的实例化配置1.构造方式实例化:用constructor标签定义构造方法的参数(很少用,不用管)业务层:UserServiceImpl代码,有参构造方法如下publicUserServiceImpl(Stringname){System.out.println("UserServiceImpl有参构造方法执行");}在applicationContext.xml配置文件里增加constru
y3131954546
·
2024-01-19 02:04
spring
学习
java
(默认命名空间的标签)
Spring学习
第五天
Spring的默认命名空间及该命名空间下的默认标签一.当然,有默认的命名空间,也有自定义命名空间,如下自定义命名空间:context命名空间当使用context命名空间时,必须加上context前缀,如下:二.标签在主函数加载System.setProperty("apring.profiles.active","test")或者System.setProperty("apring.profile
y3131954546
·
2024-01-19 02:29
学习
【
Spring学习
】过滤器和拦截器
1、认识过滤器(Filter)1.1、过滤器的定义过滤器是JavaWeb的三大组件之一,是实现Filter接口的Java类。过滤器是实现对请求资源(jsp、servlet、html)的过滤功能,是一个运行在服务器的程序,优先于请求资源(jsp、servlet、html)之前执行。当浏览器发送请求给服务器的时候,先执⾏过滤器,然后才访问Web的资源。服务器响应Response,从Web资源抵达浏览器
pbinlog
·
2024-01-18 05:47
Spring学习
Spring AOP
4.SpringAOP4.1.为什么要学习AOP?案例:有一个接口Service有一个addUser方法,在调用addUser(被调用时打印调用前的毫秒数与调用后的毫秒数),其实现为:@ServicepublicclassUserServiceImplimplementsUserService{@AutowiredprivateUserDaouserDao;publicvoidaddUser(){
Bridge Fish
·
2024-01-15 15:14
Spring
spring
学习
java
SpringBoot+FastJson 优雅的过滤 Response Body
Spring源码系列1、
Spring学习
之扩展点总结之后置处理器(一)2、
Spring学习
之扩展点总结之后置处理器(二)3、
Spring学习
之扩展点总结之自定义事件(三)4、
Spring学习
之扩展点总结之内置事件
YPhen
·
2024-01-13 09:06
SpringBoot
微服务学习
spring
boot
java
后端
Spring学习
基于注解的AOP控制事务
8.1.拷贝上一章代码8.2.applicationContext.xml8.3.service@Service@Transactional(readOnly=true,propagation=Propagation.SUPPORTS)publicclassUserServiceImplimplementsUserService{@AutowiredprivateUserMapperuserMap
Bridge Fish
·
2024-01-13 06:00
Spring
spring
学习
java
Spring学习
Spring常用注解大全
目录注解xml和注解的理解使用注解的前提★常用注解1、声明bean的注解@Component@Service@Repository@Controller2、注入bean的注解@Autowired@Qualifier@Resource@Value3、改变作用范围的注解@Scope4、生命周期相关的注解@PostConstruct@PreDestroy5、切面(AOP)相关注解@Aspect@Afte
Bridge Fish
·
2024-01-13 06:30
spring
学习
java
Spring学习
之——事务控制
Spring中的事务控制说明:JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案。Spring框架为我们提供了一组事务控制的接口。具体在后面的小节介绍。这组接口是在spring-tx.RELEASE.jar中。spring的事务控制都是基于AOP的,它既可以使用编程的方式实现,也可以使用配置的方式实现。我们学习的重点是使用配置的方式实现。Platf
shimmer008
·
2024-01-09 08:47
Spring
spring
学习
数据库
Spring学习
之——AOP(面向切面)
AOP概念AOP:全称是AspectOrientedProgramming即:面向切面编程。简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对程序进行增强:权限校验,日志记录,性能监控,事务控制.AOP相关术语连接点(joinpoint)被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法。其
shimmer008
·
2024-01-09 08:46
Spring
spring
学习
java
Spring学习
之——基于注解的AOP
基于注解的AOP常用注解@Aspect:把当前类声明为切面类@Before:前置通知,可以指定切入点表达式@AfterReturning:后置【try】通知,可以指定切入点表达式@AfterThrowing:异常【catch】通知,可以指定切入点表达式@After:最终【finally】通知,可以指定切入点表达式@Around:环绕通知,可以指定切入点表达式案例pom.xml4.0.0com.by
shimmer008
·
2024-01-09 08:46
Spring
spring
学习
java
Spring学习
之——常见异常
常见异常以下是我遇到的不知道怎么解决异常java.sql.SQLException:Accessdeniedforuser‘username’@‘localhost’(usingpassword:YES)ERROR[Druid-ConnectionPool-Create-1833789138]-createconnectionerror,url:jdbc:mysql://localhost:330
shimmer008
·
2024-01-09 08:46
spring
学习
java
Spring学习
之——代理模式
Proxy代理模式介绍为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用2.组成抽象角色:通过接口或抽象类声明真实角色实现的业务方法。抽象角色一般声明为接口,内部写真实角色的抽象方法。eg.有一个公共的歌手接口,有一个唱歌的方法真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用
shimmer008
·
2024-01-09 08:40
Spring
spring
学习
代理模式
Spring学习
目标
Spring概述SpringIOC[重点]基于注解的IOC配置SpringAOP[重点]基于注解的AOP配置Spring整合MyBatisSpring事务控制[重点]基于注解的事务控制
Digimon-Y
·
2024-01-08 04:17
spring
学习
java
Spring学习
笔记(三)-AOP技术(模拟实现利用java中的Proxy和CGlib)
1.利用JDK自带的Proxy和CGlib代理类模拟实现AOP功能1.实现的业务是:1).拦截所有的业务方法2).判断用户是否有权限,有权限就允许它执行业务方法,没有权限就不允许它执行业务方法(是否有权限根据user是否为null来判断)上面的这个就是AOP中所说的“横切性关注点”。使用JDK中提供的Proxy(代理类)类实现上面一段话所讲的拦截。编写代理类,用的是JDK中提供的Proxy,Pro
G__yuan
·
2024-01-06 22:57
Spring学习
Spring IOC
创建工程:2.1.程序的耦合耦合:耦合指的就是对象之间的依赖关系。对象之间的耦合越高,维护成本越高。案例:没有引入IOC容器时系统的Web层、业务层、持久层存在耦合/***持久层实现类*/publicclassUserDaoImplimplementsUserDao{@OverridepublicvoidaddUser(){System.out.println("insertintotb_user
Bridge Fish
·
2024-01-05 21:38
Spring
spring
学习
java
Spring学习
Spring概述
1.1.Spring介绍Spring是轻量级JavaEE应用开源框架(官网:http://spring.io/),它由RodJohnson创为了解决企业级编程开发的复杂性而创建1.2.简化应用开发体现在哪些方面?IOC解决传统Web开发中硬编码所造成的程序耦合AOP实现在运行期间不修改源代码对程序进行增强粘合剂Spring是一个超级粘合平台,除了自己提供功能外,还提供整合其他技术和框架的能力1.3
Bridge Fish
·
2024-01-05 21:36
Spring
spring
学习
java
Spring学习
之——bean的作用范围
bean的作用范围概述在Spring中,bean作用域用于确定bean实例应该从哪种类型的Spring容器中返回给调用者。五种作用域作用域说明singleton默认值,Bean以单例方式存在springIoC容器prototype每次从容器中调用Bean时都返回一个新的实例,相当于执行newInstance()requestWEB项目中,Spring创建一个Bean的对象,将对象存入到reques
shimmer008
·
2024-01-05 19:31
Spring
spring
学习
java
Spring学习
之——bean的生命周期
bean的生命周期创建阶段Spring⼯⼚何时创建对象scope=“singleton”Spring⼯⼚创建的同时,对象的创建注意:设置scope=singleton这种情况下也需要在获取对象的同时,创建对象scope=“prototype”Spring⼯⼚会在获取对象的同时,创建对象ctx.getBean(“”)如果使用注入,则注入一定在初始化前面进行初始化阶段Spring⼯⼚在创建完对象后,调
shimmer008
·
2024-01-05 19:31
Spring
spring
学习
java
Spring学习
之——IOC
IOC概念IOC(InverseofControl)即控制反转:由ioc容器来创建依赖对象,程序只需要从IOC容器获取创建好的对象。原来:我们在获取对象时,都是采用new的方式。是主动的。现在:我们获取对象时,同时跟工厂要,有工厂为我们查找或者创建对象。是被动的。这种被动接收的方式获取对象的思想就是控制反转,它是spring框架的核心之一。例子1.pom.xmlorg.springframewor
shimmer008
·
2024-01-05 19:30
Spring
spring
学习
java
Spring学习
之——注入DI(Dependence Injection)
注入DI(DependenceInjection)概念(什么是注入)DI(DependencyInjection)依赖注入,在Spring创建对象的同时,为其属性赋值,称之为依赖注入。注入方式一:构造函数注入顾名思义,就是使用类中的构造函数,给成员变量赋值。注意,赋值的操作不是我们自己做的,而是通过配置的方式,让spring框架来为我们注入。具体代码如下:serviceImpl/***业务层实现类
shimmer008
·
2024-01-05 19:30
Spring
spring
学习
sql
Spring学习
之——工厂模式
工厂模式作用:由工厂来进行创建对象,同时到达了解耦合的效果耦合:代码被硬编码在了程序中,后期维护的代技大。例子1(自己创建一个BeanFactory)1.pom.xmlorg.springframeworkspring-context5.1.8.RELEASE2.DAO/***持久层实现类*/publicclassUserDaoImplimplementsUserDao{@Overridepubl
shimmer008
·
2024-01-05 19:00
Spring
spring
学习
java
Spring学习
之——基于注解的IOC配置
基于注解的IOC配置IOC1.applicationContext.xml2.dao@RepositorypublicclassUserDaoImplimplementsUserDao{......}3.service@ServicepublicclassUserServiceImplimplementsUserService{......}DI1.service@Servicepubliccla
shimmer008
·
2024-01-05 19:28
Spring
spring
学习
java
Spring学习
笔记 - 第一章 - IoC(控制反转)、IoC容器、Bean的实例化与生命周期、DI(依赖注入)
原文地址:
Spring学习
笔记-第一章-IoC(控制反转)、IoC容器、Bean的实例化与生命周期、DI(依赖注入)
Spring学习
笔记全系列传送门:【本章】
Spring学习
笔记-第一章-IoC(控制反转
Dandelion_000
·
2024-01-03 10:46
Spring
spring
java
java-ee
后端
【
Spring学习
】AOP实现日志记录
AOP知识点AOP,面向切面编程。通过预编译方式和运行时动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP编程思想就是把很多类对象中的横切问题点,从业务逻辑中分离出来,减少代码的冗余和降低模块间的耦合度,提高开发效率。简单说就是:把程序里重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对已有方法进行增强。常用于日志记录、事务处理、权限验证等等
pbinlog
·
2024-01-02 05:08
(
Spring学习
11)Spring之事务底层源码解析
@EnableTransactionManagement工作原理开启Spring事务本质上就是增加了一个Advisor,但我们使用@EnableTransactionManagement注解来开启Spring事务是,该注解代理的功能就是向Spring容器中添加了两个Bean:AutoProxyRegistrarProxyTransactionManagementConfigurationAutoP
ZGOOD9527
·
2023-12-29 13:45
spring
学习
java
(
Spring学习
09)Spring之整合Mybatis底层源码解析
整合核心思路很多框架都需要和Spring进行整合,而整合的核心思想就是把其他框架所产生的对象放到Spring容器中,让其成为Bean。比如Mybatis,Mybatis框架可以单独使用,而单独使用Mybatis框架就需要用到Mybatis所提供的一些类构造出对应的对象,然后使用该对象,就能使用到Mybatis框架给我们提供的功能,和Mybatis整合Spring就是为了将这些对象放入Spring容
ZGOOD9527
·
2023-12-29 13:15
spring
学习
mybatis
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他