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);
  }
}

运行结果:

相关推荐
aloha_7896 分钟前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java36 分钟前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
睡觉谁叫~~~40 分钟前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
程序媛小果1 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
小屁孩大帅-杨一凡2 小时前
java后端请求想接收多个对象入参的数据
java·开发语言
java1234_小锋2 小时前
使用 RabbitMQ 有什么好处?
java·开发语言
TangKenny2 小时前
计算网络信号
java·算法·华为
肘击鸣的百k路2 小时前
Java 代理模式详解
java·开发语言·代理模式
城南vision2 小时前
Docker学习—Docker核心概念总结
java·学习·docker
wyh要好好学习2 小时前
SpringMVC快速上手
java·spring