Spring5 使用xml创建对象

以下是官网作出的解释 点击进入spring官网

Spring提供了ApplicationContext接口的几个实现。在独立应用程序中,通常会创建ClassPathXmlApplicationContext或FileSystemXmlApplicationContext的实例。虽然XML是定义配置元数据的传统格式,但是您可以通过提供少量的XML配置来指示容器使用Java注释或代码作为元数据格式,以声明方式启用对这些附加元数据格式的支持。

  1. 通过set方法的参数名创建bean
	<!--对应的实体类需要有对应的set方法,并且set方法的参数名与property标签中的name一致-->
    <bean id="bySetName" class="com.gq.demo.entity.ObjectEntity">
        <property name="id" value="id111"></property>
        <property name="name" value="I'm bySetName"></property>
    </bean>
  1. 通过构造参数创建bean(可以使用参数名和参数的下标从0开始是第一个参数)
   <!--这种是通过参数名去构造-->
   <bean id="byConstructorArg" class="com.gq.demo.entity.ObjectEntity">
       <constructor-arg name="id" value="id2"></constructor-arg>
       <constructor-arg name="name" value="I’m byConstructor"></constructor-arg>
   </bean>

  <!--这种是通过参数下标去构造-->
   <bean id="byConstructorIndex" class="com.gq.demo.entity.ObjectEntity">
       <constructor-arg index="0" value="id3"></constructor-arg>
       <constructor-arg index="1" value="I’m byConstructorIndex"></constructor-arg>
   </bean>
  1. 设置特殊值(设置null值 设置大于小于的特殊值)
   <!--value设置特殊值 -->
   <bean id="setSpecialValue" class="com.gq.demo.entity.ObjectEntity">
       <property name="id" value="id4"></property>
       <property name="name"><null/></property>
       <!-- &lt; 小于  &gt; 大于 -->
       <!-- <property name="remark" value="&lt;&lt;测试&gt;&gt;"></property>-->
       <!--也可以使用    <![CDATA[your value]]>      -->
       <property name="remark">
           <value> <![CDATA[<<测试>>]]> </value>
       </property>
   </bean>
  1. 注入外部bean(一个bean调用另一个bean)
  <!--
      1.先分别创建两个bean
      2.然后使用ref属性进行注入
   -->
   <bean id="userService" class="com.gq.demo.create.service.UserService">
       <property name="userDao" ref="userDao"></property>
   </bean>

   <bean id="userDao" class="com.gq.demo.create.dao.UserDao"></bean>
  1. 注入内部bean
   <!--现有一个员工实体类和部门实体类员工bean注入部门bean-->

 <!--1.内部注入的方式 在department配置里面再创建一个bean对其进行构造-->
   <bean id="emp" class="com.gq.demo.entity.Emp">
       <property name="empId" value="empId1"></property>
       <property name="empName" value="闪电鞭"></property>
       <property name="department">
           <bean id="dept" class="com.gq.demo.entity.Department">
               <property name="deptId" value="deptId1"></property>
               <property name="deptName" value="混元太极部门"></property>
           </bean>
       </property>
   </bean>

<!--2. 也可以当成对象形式给它点出来  前提是得有department的get方法-->
   <bean id="emp" class="com.gq.demo.entity.Emp">
       <property name="empId" value="empId1"></property>
       <property name="empName" value="闪电鞭"></property>
       <!--级联赋值-->
       <property name="department" ref="dept"></property>
       <property name="department.deptId" value="deptId2"></property>
       <property name="department.deptName" value="接化发部门"></property>
   </bean>

   <bean id="dept" class="com.gq.demo.entity.Department"></bean>

  1. 注入集合
<?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:util="http://www.springframework.org/schema/util"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd

       http://www.springframework.org/schema/util
       http://www.springframework.org/schema/util/spring-util.xsd">

   <!--提取公用的值 也可以是bean  
   	使用util:list需要在beans添加 
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd
    -->
    
   <!--提取公用的值 也可以是bean  -->
   <util:list id="list">
       <value>value1</value>
       <value>value2</value>
       <value>value3</value>
   </util:list>

    <!--property都有对应的属性-->
   <bean id="injectCollection" class="com.gq.demo.entity.CollectionEntity">
       <property name="array" ref="list"></property>

       <property name="list" ref="list"></property>

       <property name="map">
           <map>
               <entry key="m1" value="map1"></entry>
               <entry key="m2" value="map2"></entry>
           </map>
       </property>

       <property name="set" >
           <set>
               <value>set1</value>
               <value>set2</value>
           </set>
       </property>
       
       <property name="empList" >
           <list>
               <bean id="emp" class="com.gq.demo.entity.Emp">
                   <property name="empName" value="一鞭"></property>
               </bean>
               <bean id="emp" class="com.gq.demo.entity.Emp">
                   <property name="empName" value="两鞭"></property>
               </bean>
               <bean id="emp" class="com.gq.demo.entity.Emp">
                   <property name="empName" value="三鞭"></property>
               </bean>
           </list>

       </property>

   </bean>
   
</beans>
以上就是常用的使用xml形式创建bean。我已经把它放到码云上了点击进入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring 中,我们通常不直接使用 `new` 关键字来创建对象,而是使用 Spring 容器来管理对象的生命周期。Spring 容器会负责创建、初始化、配置和管理对象,我们只需要在配置文件中声明需要管理的对象,然后通过容器来获取这些对象。 在配置文件中,我们可以使用 `bean` 标签来声明一个 Bean 对象,例如: ```xml <bean id="userService" class="com.example.UserService"> <property name="userDao" ref="userDao" /> </bean> <bean id="userDao" class="com.example.UserDaoImpl"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mydb" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean> ``` 在上面的配置文件中,我们声明了一个名为 `userService` 的 Bean 对象,它的类是 `com.example.UserService`,并且它依赖于一个名为 `userDao` 的 Bean 对象和一个名为 `dataSource` 的 Bean 对象。当我们需要使用 `userService` 对象时,只需要从 Spring 容器中获取即可: ```java ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = context.getBean("userService", UserService.class); ``` 这样,我们就可以通过 Spring 容器来管理对象,而不需要使用 `new` 关键字来创建对象

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值