问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

spring的ioc注入方式有几种

发布网友 发布时间:2022-04-21 01:07

我来回答

3个回答

热心网友 时间:2022-04-23 10:54

一、Set注入

二、构造器注入

三、静态工厂的方法注入

内容拓展:

一、Set注入

1、这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口)。

2、随后编写spring的xml文件,<bean>中的name属性是class属性的一个别名,class属性指类的全名,因为在SpringAction中有一个公共属性Spring,所以要在<bean>标签中创建一个<property>标签指定SpringDao。<property>标签中的name就是SpringAction类中的SpringDao属性名,ref指下面<bean name="springDao"...>,这样其实是spring将SpringDaoImpl对象实例化并且调用SpringAction的setSpringDao方法将SpringDao注入。

二、构造器注入

1、这种方式的注入是指带有参数的构造函数注入,看下面的例子,我创建了两个成员变量SpringDao和User,但是并未设置对象的set方法,所以就不能支持第一种注入方式,这里的注入方式是在SpringAction的构造函数中注入,也就是说在创建SpringAction对象时要将SpringDao和User两个参数值传进来。

2、在XML文件中同样不用<property>的形式,而是使用<constructor-arg>标签,ref属性同样指向其它<bean>标签的name属性。

三、静态工厂的方法注入

1、静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让spring管理所有对象,我们不能直接通过"工程类.静态方法()"来获取对象,而是依然通过spring注入的形式获取。

2、同样看关键类,这里我需要注入一个FactoryDao对象,这里看起来跟第一种注入一模一样,但是看随后的xml会发现有很大差别。

热心网友 时间:2022-04-23 12:12

spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控制什么?依赖注入和控制反转是一样的概念吗?接触新的知识,小编的脑袋中全是大大的问号,不过没有关系,今天这篇博文,小编主要来简单的介绍一下在spring IOC中依赖注入的方法。


依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性。我们可以从以下几个方面理解:
a、参与者都有谁?
b、依赖:谁依赖谁?为什么需要依赖?
c、注入:谁注入谁?又注入了什么呢?
d、控制反转:谁控制谁?控制什么?为什么叫反转呢?存在正转吗?

e、控制反转和依赖注入是同一个概念吗?我们需要弄明白上面的问题,这样对于控制反转和依赖注入的理解有大大的帮助。


首先:第一个问题,参与者都有谁?
1)对象
2)IOC/DI容器
3)某个对象的外部资源


第二问题:依赖,谁依赖谁?为什么需要依赖?
依赖嘛,很好理解的,对象依赖于IOC/DI容器,至于为什么要依赖呢?对象需要IOC/DI容器来提供对象需要的外部资源。


第三个问题:注入,谁注入谁?又注入了什么呢?
显而易见是IOC/DI容器注入对象,注入了what呢?肯定注入的是某个需要的东西那就是注入对象所需要的资源,肯定不会注入无关紧要的内容,你说呢?


第四个问题:控制反转,谁控制谁?控制什么?为什么叫反转呢?存在正转吗?
控制反转,控制什么?肯定是IOC/DI容器控制对象,主要是控制对象实例的创建,反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C,这种情况被称为正向的。那么什么是反向呢?就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中。


第五个问题:控制反转和依赖注入式同一个概念吗?


依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。


了解了这些基本的概念,弄明白她们之间的联系和区别,能够帮助我们更好的理解,接着小编来重点介绍一下依赖注入,在spring ioc中有三种依赖注入,分别是:


a、接口注入;
b、setter方法注入;
c、构造方法注入;


接着小编对这三种注入方式一一进行讲解,通过demo的讲解,希望能够帮助小伙伴们更好的理解,不足之处还请多多指教。
接口注入


public class ClassA {  
  private InterfaceB clzB;  
  public void doSomething() {  
    Ojbect obj = Class.forName(Config.BImplementation).newInstance();  
    clzB = (InterfaceB)obj;  
    clzB.doIt();   
  }  
……  
}


解释一下上述的代码部分,ClassA依赖于InterfaceB的实现,我们如何获得InterfaceB的实现实例呢?传统的方法是在代码中创建 InterfaceB实现类的实例,并将赋予clzB.这样一来,ClassA在编译期即依赖于InterfaceB的实现。为了将调用者与实现者在编译期分离,于是有了上面的代码。我们根据预先在配置文件中设定的实现类的类名(Config.BImplementation),动态加载实现类,并通过InterfaceB强制转型后为ClassA所用,这就是接口注入的一个最原始的雏形。


setter方法注入

setter注入模式在实际开发中有非常广泛的应用,setter方法更加直观,我们来看一下spring的配置文件:


<?xml version="1.0" encoding="UTF-8"?>    
<beans xmlns="http://www.springframework.org/schema/beans"    
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
         xmlns:aop="http://www.springframework.org/schema/aop"    
         xmlns:tx="http://www.springframework.org/schema/tx"    
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd    
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd    
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">    
    
    <!-- 使用spring管理对象的创建,还有对象的依赖关系 -->    
    <bean id="userDao4Mysql" class="com.tgb.spring..UserDao4MysqlImpl"/>    
    
    <bean id="userDao4Oracle" class="com.tgb.spring..UserDao4OracleImpl"/>    
        
    <bean id="userManager" class="com.tgb.spring.manager.UserManagerImpl">    
        <!-- (1)userManager使用了userDao,Ioc是自动创建相应的UserDao实现,都是由容器管理-->    
        <!-- (2)在UserManager中提供构造函数,让spring将UserDao实现注入(DI)过来 -->    
        <!-- (3)让spring管理我们对象的创建和依赖关系,必须将依赖关系配置到spring的核心配置文件中 -->    
    
        <property name="userDao" ref="userDao4Oracle"></property>    
    </bean>    
        
</beans>

 

接着我们来看一下,setter表示依赖关系的写法




import com.tgb.spring..UserDao;    
    
public class UserManagerImpl implements UserManager{    
    
    private UserDao userDao;    
    
    //使用设值方式赋值    
    public void setUserDao(UserDao userDao) {    
        this.userDao = userDao;    
    }    
        
    @Override    
    public void addUser(String userName, String password) {    
    
        userDao.addUser(userName, password);    
    }    
}


构造器注入


构造器注入,即通过构造函数完成依赖关系的设定。我们看一下spring的配置文件:



<?xml version="1.0" encoding="UTF-8"?>    
    <beans xmlns="http://www.springframework.org/schema/beans"    
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
             xmlns:aop="http://www.springframework.org/schema/aop"    
             xmlns:tx="http://www.springframework.org/schema/tx"    
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd    
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd    
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">    
        
        <!-- 使用spring管理对象的创建,还有对象的依赖关系 -->    
        <bean id="userDao4Mysql" class="com.tgb.spring..UserDao4MysqlImpl"/>    
        
        <bean id="userDao4Oracle" class="com.tgb.spring..UserDao4OracleImpl"/>    
            
        <bean id="userManager" class="com.tgb.spring.manager.UserManagerImpl">    
            <!-- (1)userManager使用了userDao,Ioc是自动创建相应的UserDao实现,都是由容器管理-->    
            <!-- (2)在UserManager中提供构造函数,让spring将UserDao实现注入(DI)过来 -->    
            <!-- (3)让spring管理我们对象的创建和依赖关系,必须将依赖关系配置到spring的核心配置文件中 -->    
        
            <constructor-arg ref="userDao4Oracle"/>    
        </bean>    
            
    </beans>


我们再来看一下,构造器表示依赖关系的写法,代码如下所示:




 import com.tgb.spring..UserDao;    
        
    public class UserManagerImpl implements UserManager{    
        
        private UserDao userDao;    
        
        //使用构造方式赋值    
        public UserManagerImpl(UserDao userDao) {    
            this.userDao = userDao;    
        }    
        
        @Override    
        public void addUser(String userName, String password) {    
        
            userDao.addUser(userName, password);    
        }    
    }


接口注入 && setter注入 && 构造器注入


接口注入:
接口注入模式因为具备侵入性,它要求组件必须与特定的接口相关联,因此并不被看好,实际使用有限。


Setter 注入:
对于习惯了传统 javabean 开发的程序员,通过 setter 方法设定依赖关系更加直观。如果依赖关系较为复杂,那么构造子注入模式的构造函数也会相当庞大,而此时设值注入模式则更为简洁。如果用到了第三方类库,可能要求我们的组件提供一个默认的构造函数,此时构造子注入模式也不适用。


构造器注入:
在构造期间完成一个完整的、合法的对象。所有依赖关系在构造函数中集中呈现。依赖关系在构造时由容器一次性设定,组件被创建之后一直处于相对“不变”的稳定状态。只有组件的创建者关心其内部依赖关系,对调用者而言,该依赖关系处于“黑盒”之中。

热心网友 时间:2022-04-23 13:47

spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么看为什么需要依赖看注入什么看控制什么看依赖注入和控制反转是一样的概念吗看接触新的知识,小编的脑袋中全是大大的问号,不过没有关系,今天这篇博文,小编主要来简单的介绍一下在spring
IOC中依赖注入的方法。
依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性。我们可以从以下几个方面理解:
a、参与者都有谁看
b、依赖:谁依赖谁看为什么需要依赖看
c、注入:谁注入谁看又注入了什么呢看
d、控制反转:谁控制谁看控制什么看为什么叫反转呢看存在正转吗看
e、控制反转和依赖注入是同一个概念吗看我们需要弄明白上面的问题,这样对于控制反转和依赖注入的理解有大大的帮助。
首先:第一个问题,参与者都有谁看
1)对象
2)IOC/DI容器
3)某个对象的外部资源
第二问题:依赖,谁依赖谁看为什么需要依赖看
依赖嘛,很好理解的,对象依赖于IOC/DI容器,至于为什么要依赖呢看对象需要IOC/DI容器来提供对象需要的外部资源。
第三个问题:注入,谁注入谁看又注入了什么呢看
显而易见是IOC/DI容器注入对象,注入了what呢看肯定注入的是某个需要的东西那就是注入对象所需要的资源,肯定不会注入无关紧要的内容,你说呢看
第四个问题:控制反转,谁控制谁看控制什么看为什么叫反转呢看存在正转吗看
控制反转,控制什么看肯定是IOC/DI容器控制对象,主要是控制对象实例的创建,反转是相对于正向而言的,那么什么算是正向的呢看考虑一下常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢看当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C,这种情况被称为正向的。那么什么是反向呢看就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中。
第五个问题:控制反转和依赖注入式同一个概念吗看
依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。
了解了这些基本的概念,弄明白她们之间的联系和区别,能够帮助我们更好的理解,接着小编来重点介绍一下依赖注入,在spring
ioc中有三种依赖注入,分别是:
a、接口注入;
b、setter方法注入;
c、构造方法注入;
接着小编对这三种注入方式一一进行讲解,通过demo的讲解,希望能够帮助小伙伴们更好的理解,不足之处还请多多指教。
接口注入
public class ClassA {
private InterfaceB clzB;
public void doSomething() {
Ojbect obj = Class.forName(Config.BImplementation).newInstance();
clzB = (InterfaceB)obj;
clzB.doIt();
}
……
}
解释一下上述的代码部分,ClassA依赖于InterfaceB的实现,我们如何获得InterfaceB的实现实例呢看传统的方法是在代码中创建
InterfaceB实现类的实例,并将赋予clzB.这样一来,ClassA在编译期即依赖于InterfaceB的实现。为了将调用者与实现者在编译期分离,于是有了上面的代码。我们根据预先在配置文件中设定的实现类的类名(Config.BImplementation),动态加载实现类,并通过InterfaceB强制转型后为ClassA所用,这就是接口注入的一个最原始的雏形。
setter方法注入
setter注入模式在实际开发中有非常广泛的应用,setter方法更加直观,我们来看一下spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
xmlns:xsi="
xmlns:aop="
xmlns:tx="
xsi:schemaLocation="

<!-- 使用spring管理对象的创建,还有对象的依赖关系 -->
<bean id="userDao4Mysql" class="com.tgb.spring..UserDao4MysqlImpl"/>

<bean id="userDao4Oracle" class="com.tgb.spring..UserDao4OracleImpl"/>

<bean id="userManager" class="com.tgb.spring.manager.UserManagerImpl">
<!-- (1)userManager使用了userDao,Ioc是自动创建相应的UserDao实现,都是由容器管理-->
<!-- (2)在UserManager中提供构造函数,让spring将UserDao实现注入(DI)过来 -->
<!-- (3)让spring管理我们对象的创建和依赖关系,必须将依赖关系配置到spring的核心配置文件中 -->

<property name="userDao" ref="userDao4Oracle"></property>
</bean>

</beans>

接着我们来看一下,setter表示依赖关系的写法
import com.tgb.spring..UserDao;

public class UserManagerImpl implements UserManager{

private UserDao userDao;

//使用设值方式赋值
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}

@Override
public void addUser(String userName, String password) {

userDao.addUser(userName, password);
}
}
构造器注入
构造器注入,即通过构造函数完成依赖关系的设定。我们看一下spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
xmlns:xsi="
xmlns:aop="
xmlns:tx="
xsi:schemaLocation="

<!-- 使用spring管理对象的创建,还有对象的依赖关系 -->
<bean id="userDao4Mysql" class="com.tgb.spring..UserDao4MysqlImpl"/>

<bean id="userDao4Oracle" class="com.tgb.spring..UserDao4OracleImpl"/>

<bean id="userManager" class="com.tgb.spring.manager.UserManagerImpl">
<!-- (1)userManager使用了userDao,Ioc是自动创建相应的UserDao实现,都是由容器管理-->
<!-- (2)在UserManager中提供构造函数,让spring将UserDao实现注入(DI)过来 -->
<!-- (3)让spring管理我们对象的创建和依赖关系,必须将依赖关系配置到spring的核心配置文件中 -->

<constructor-arg ref="userDao4Oracle"/>
</bean>

</beans>
我们再来看一下,构造器表示依赖关系的写法,代码如下所示:
import com.tgb.spring..UserDao;

public class UserManagerImpl implements UserManager{

private UserDao userDao;

//使用构造方式赋值
public UserManagerImpl(UserDao userDao) {
this.userDao = userDao;
}

@Override
public void addUser(String userName, String password) {

userDao.addUser(userName, password);
}
}
接口注入
&&
setter注入
&&
构造器注入
接口注入:
接口注入模式因为具备侵入性,它要求组件必须与特定的接口相关联,因此并不被看好,实际使用有限。
Setter
注入:
对于习惯了传统
javabean
开发的程序员,通过
setter
方法设定依赖关系更加直观。如果依赖关系较为复杂,那么构造子注入模式的构造函数也会相当庞大,而此时设值注入模式则更为简洁。如果用到了第三方类库,可能要求我们的组件提供一个默认的构造函数,此时构造子注入模式也不适用。
构造器注入:
在构造期间完成一个完整的、合法的对象。所有依赖关系在构造函数中集中呈现。依赖关系在构造时由容器一次性设定,组件被创建之后一直处于相对逗不变地的稳定状态。只有组件的创建者关心其内部依赖关系,对调用者而言,该依赖关系处于逗黑盒地之中。
spring的ioc注入方式有几种?

一、Set注入 二、构造器注入 三、静态工厂的方法注入 内容拓展:一、Set注入 1、这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口)。2、随后编写spring的xml文件,&lt;bean&gt;中...

spring有几种注入方式?

2、spring的IOC有三种注入方式第一是根据属性注入也叫set方法注入;第二种是根据构造方法进行注入;第三种是根据注解进行注入,这种方式我认为比较好,方便,要是bean多的话,使用前两种方式会使得配置文件过于臃肿。3、接口注入:接口注入模式因为历史较为悠久,在很多容器中都已经得到应用。但由于其在灵活...

Spring依赖注入的两种方式是( )和( )。

1、Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入。2、如果题目里只有两个空,那就是setter注入(也就是通过配置文件)和注解注入。setter注入的写法(配置文件)&lt;!-- 注册userService --&gt;&lt;bean id="userService" class="com.lyu....

请你谈谈对spring的理解?

第一是根据属性注入 也叫set方法注入;第二种是根据构造方法进行注入;第三种是根据注解进行注入,这种方式我认为比较好,方便,要是bean多的话,使用前两种方式会使得配置文件过于臃肿。Spring的优点:主要是根据它的IOC和AOP体现的。我感觉他就是把我们以前用到的工厂模式和代理模式进行了一个封装。IOC...

spring的三种注入方式是什么?

接口注入:接口注入模式因为历史较为悠久,在很多容器中都已经得到应用。但由于其在灵活性、易用性上不如其他两种注入模式,因而在 IOC 的专题世界内并不被看好。Setter 注入:对于习惯了传统 javabean 开发的程序员,通过 setter 方法设定依赖关系更加直观。如果依赖关系较为复杂,那么构造子注入模式的构造...

Spring中依赖注入的四种方式(spring依赖注入有哪些实现方式)

SpringIOC的四种注入方式控制反转(InversionofControl),是一种设计思想,而依赖注入(DI)是一种实现的方法。原本对象的创建是依靠程序员来创建,通过依赖注入的方法来改造后,对象的创建是依赖IOC容器,对象的属性依赖IOC容器注入。setter是Spring现在最主流的注入方式,它可以利用JavaBean规范所定义set/get方法...

什么是 spring 的 ioc aop什么是 spring 的 ioc aop

spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。什么是AOP?面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面 1.面向切面编程提供声明式事务管理 2....

【Spring】浅谈spring为什么推荐使用构造器注入

Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过将组件交由Spring的IOC容器管理,将对象的依赖关系由Spring控制,避免硬编码所造成的过度程序耦合。前几天的时候,笔者的同事问我为什么要使用构造器的注入方式,...

SpringIoc和Aop底层原理

首先,Ioc(依赖注入)通过Spring配置文件实现对象的创建,而不是传统的new方式。实现Ioc,主要有两种方法:配置文件和注解。Ioc底层原理包括:使用xml配置文件创建类,通过dom4j解析配置,工厂设计模式配合使用,以及反射技术。通过Ioc,开发者只需修改bean配置属性,就能更换UserService类,有效降低类间的耦合度...

ioc是什么意思

IOC的实现方式主要有两种,即依赖注入和依赖查找。依赖注入是指,框架在创建对象的时候,会自动将依赖的对象注入到该对象中。而依赖查找则是指,框架提供一个方法,用于查找需要的依赖对象。Spring框架采用的是依赖注入的方式,通过注解或XML配置文件来配置依赖,自动将依赖对象注入到需要的对象中。而在其他...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
...与数学的求法不同,不理解,求高手帮忙看看谢谢! 国有控股公司有哪些 我的魔兽世界号的世界地图被拖没了 魔兽世界地图被我移动的找不到了,怎么办A??? 魔兽世界里的地图让我整没了,按M出不来,按SHIFT加M只能出来一个小地图... 魔兽世界的地图被我拖没了?还有就是我用自己的身份证申请的号,怎么可能... 婺源蓝湾精品酒店请问酒店的早餐都有哪些种类呢? ...的副卡和一张自己办的主卡,这两张卡可以在同一个手机使用吗?_百度... 我小号的裤子石化蜥蜴皮裤想附魔40耐10敏那个。给大号附魔的时候说对... 男朋友生日暖心祝福语 spring的ioc和aop都是什么?? win7 计算机 分组依据 大型.net网站使用什么ioc容器 需要设计一个类似IOC容器类 IOC究竟有什么存在意义 什么是IOC,IOC的优缺点及IOC的应用 什么是IOC,什么时候用IOC ? Spring框架如何实现ioc的?能详细解释一下内部机制么 什么是IoC以及理解为什么要使用Ioc IOC容器到底是什么解决方法 spring的ioc容器可以为普通的类创建单例,它是怎么做到的呢 spring的ioc容器实现原理,为什么可以通过byname和bytype找到bean spring ioc容器指的是什么 IOC容器是什么? spring ioc实现原理 java编程,spring里ioc和aop用什么原理实现的 spring ioc是怎么实现的 IOC容器是什么 一嗨租车芝麻信用多少可以免押金 qq身份证 如何给 TP3.1 用上 IoC 容器 芝麻信用 一嗨租车,预授权了双免,如果违法扣分,会影响到芝麻信用分吗? 生肖属鼠的年份有哪些? 十二生肖中,鼠为什么排在第一呢,有什么依据? 子鼠是什么生肖 十二生肖中鼠的性格特点是怎么样的? 十二生肖鼠的来历 十二生肖鼠应该排列第几位? 十二生肖鼠为什么排第一? 十二生肖鼠的象征意义是什么? 十二生肖子鼠是什么意思? 十二生肖中为什么没有猫有老鼠的? 十二生肖之鼠 12生肖鼠的由来 为什么鼠是十二属相之首? 十二生肖鼠上面是什么 十二生肖:鼠的目录 鼠为什么是十二生肖之首 十二生肖老鼠的故事是什么? 属鼠的是那年出生的
  • 焦点

最新推荐

猜你喜欢

热门推荐