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

运行结果:

相关推荐
世间万物皆对象8 分钟前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
没书读了37 分钟前
ssm框架-spring-spring声明式事务
java·数据库·spring
小二·1 小时前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic1 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
懒洋洋大魔王1 小时前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
武子康1 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
转世成为计算机大神2 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式
qq_327342732 小时前
Java实现离线身份证号码OCR识别
java·开发语言
阿龟在奔跑3 小时前
引用类型的局部变量线程安全问题分析——以多线程对方法局部变量List类型对象实例的add、remove操作为例
java·jvm·安全·list
飞滕人生TYF3 小时前
m个数 生成n个数的所有组合 详解
java·递归