spring:标签property

标签property对应于bean类公开的JavaBean setter方法。标签property的属性中,name为属性名,type为=""引号里面的类型,use为是否必须出现。

1.ref引用一个已经存在的对象,value创建一个新的对象

2.value可以赋一些简单类型的值,ref可以引用其他的bean对象。

applicationContext.xml

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  
  
  <!-- 类ApplicationContext的方法getBean实际读取的是bean的名称name,读取字段class信息,创建实例。bean的字段id相
       当于bean名称name的别名。当配置字段id时,name就和字段id一样,通过方法getBean读取字段id,获取字段class信息。当
       没有配置字段id时,name默认就是字段class。方法getBean读取字段class信息,创建实例。
       示例:方法com.itheima.test.ApplicationContextTest.test02。
       name:qiao wei
       date:2024-07-21
       brief:标签bean的读取。
  -->
  <bean  id="userService03"
         class="com.itheima.service.impl.UserServiceImpl">
    <!-- 属性property表示bean中的方法。
         字段name绑定bean中的方法setUserDaoTest,注意字段name的值是"删除set的UserDaoTest",格式为"userDao"。
         第一个字符必须小写,其余不变。
         字段ref绑定bean。值是bean的字段id值,即bean"com.itheima.dao.impl.UserDaoImpl"。
    -->
    <property name="userDaoTest"
              ref="userDao">
    </property>
    
    <!-- 绑定方法setUserDao111。传入的参数是"com.itheima.dao.impl.UserDaoImpl"。 -->
    <property name="userDao111"
              ref="userDao">
    </property>
  </bean>
  
  <!-- 字段name是bean的别名,功能类似字段id,别名可以同时配多个,别名间通过","分割。其余bean可以通过id、name获取该bean。
       注意id的优先级高于name。
  -->
  <bean id="userDao"
        name="aaa,bbb"
        class="com.itheima.dao.impl.UserDaoImpl">
  </bean>
</beans>

接口UserDao

java 复制代码
package com.itheima.dao;

/**
 * @copyright 2003-2024
 * @author    qiao wei
 * @date      2024-07-16
 * @version   1.0
 * @brief     
 * @history   name
 *            date
 *            brief
 */
public interface UserDao {
}

实现UserDao:

java 复制代码
package com.itheima.dao.impl;


import com.itheima.dao.UserDao;


/**
 * @copyright 2003-2024
 * @author    qiao wei
 * @date      2024-07-18
 * @version   1.0
 * @brief     继承接口UserBean。
 * @history   name
 *            date
 *            brief
 */
public class UserDaoImpl implements UserDao {
  
  public UserDaoImpl() {
    System.out.println("实例化UserDaoImpl$$$$$$$$$$$$$$$$$$$$$$$$");
  }
}

UserService:

java 复制代码
package com.itheima.service.impl;


import com.itheima.dao.UserDao;
import com.itheima.service.UserService;


/**
 * @copyright 2003-2024
 * @author    qiao wei
 * @date      2024-07-09
 * @version   1.0
 * @brief     
 * @history   name
 *            date
 *            brief
 */
public class UserServiceImpl implements UserService {
  
  public UserServiceImpl() {
    System.out.println("=============调用UserServiceImpl构造函数================");
  }
  
  /**
   * @author  qiao wei
   * @brief   传入接口UserDao实例。该方法与xml中bean中的property的字段name绑定,绑定时去掉"set","UserDaoTest"首字
   *          母"U"改成小写"u"。
   * @param   
   * @return  
   * @throws  
   * @history name
   *          date
   *          brief
   */
  public void setUserDaoTest(UserDao userDao) {
    System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@调用方法setUserDaoTest");
    System.out.println(userDao);
  }
  
  public void setUserDao111(UserDao userDao) {
    System.out.println("调用方法setUserDao111>>>>>>>>>>>>>>>>>>>>>>>>>>");
    System.out.println(userDao);
  }
}

UserServiceImpl:

java 复制代码
package com.itheima.service;

/**
 * @copyright 2003-2024
 * @author    qiao wei
 * @date      2024-07-05
 * @version   1.0
 * @brief     
 * @history   name
 *            date
 *            brief
 */
public interface UserService {
  
}

测试代码:

java 复制代码
package com.itheima.test;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.itheima.dao.UserDao;
import com.itheima.dao.impl.UserDaoImpl;
import com.itheima.service.UserService;


/**
 * @copyright 2003-2024
 * @author    qiao wei
 * @date      2024-07-18
 * @version   1.0
 * @brief     ApplicationContext在配置文件加载时,实例化bean。BeanFactory在首次调用方法getBean时实例化bean。
 * @history   name
 *            date
 *            brief
 */
public class ApplicationContextTest {
  
  public static void main(String[] args) {
    test02();
  }
    
  /**
   * @author  qiao wei
   * @brief   删除xml文件中bean的字段id,bean的name默认为字段class值,spring通过直接读取字段class获取bean。
   * @param   
   * @return  
   * @throws  
   * @history name
   *          date
   *          brief
   */
  private static void test02() {
    // ApplicationContext在配置文件加载时,实例化bean。
    ApplicationContext applicationContext =
        new ClassPathXmlApplicationContext("applicationContext.xml");
    
    // 通过方法getBean获取UserService实例。
    UserService userService =
        (UserService) applicationContext.getBean("userService03");
    
//    UserService userService =
//        (UserService) applicationContext.getBean("com.itheima.service.impl.UserServiceImpl");
    
    System.out.println(userService);
  }
}

运行结果:

相关推荐
小龙报11 分钟前
【优选算法】1. 水果成蓝 2.找到字符串中所有字母的异位词
java·c语言·数据结构·数据库·c++·redis·算法
自强的小白32 分钟前
重点!起始时间和结束时间与创建时间和修改时间的区别(localdate与LocaldateTIME区别)以及增删改查什么时候设置目前时间(添加和更新员工时)
java
雪的季节43 分钟前
Python 线程同步与异步编程 全解析
java·开发语言
吃饱了得干活1 小时前
缓存与数据库一致性:从理论到实战
java·后端·面试
520拼好饭被践踏1 小时前
JAVA+Agent学习day22
java·开发语言·后端·学习
笨蛋不要掉眼泪1 小时前
Java虚拟机:堆的参数配置
java·开发语言·jvm
霸道流氓气质1 小时前
SpringBoot中使用JasperReports 报表引擎 — 介绍、原理与使用实践
java·spring boot·后端
花生了什么事o1 小时前
DDD 分层架构:六层分层架构
java·架构·ddd
Y3815326621 小时前
3 种 SERP 数据处理方案对比:流式 / 批处理 / 缓存
java·spring·缓存
qq_150841992 小时前
SQL的insert和update二合一指令
java·数据库·sql