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

运行结果:

相关推荐
李少兄1 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
此木|西贝2 小时前
【设计模式】原型模式
java·设计模式·原型模式
可乐加.糖2 小时前
一篇关于Netty相关的梳理总结
java·后端·网络协议·netty·信息与通信
s9123601012 小时前
rust 同时处理多个异步任务
java·数据库·rust
9号达人2 小时前
java9新特性详解与实践
java·后端·面试
cg50172 小时前
Spring Boot 的配置文件
java·linux·spring boot
啊喜拔牙2 小时前
1. hadoop 集群的常用命令
java·大数据·开发语言·python·scala
anlogic3 小时前
Java基础 4.3
java·开发语言
非ban必选3 小时前
spring-ai-alibaba第七章阿里dashscope集成RedisChatMemory实现对话记忆
java·后端·spring
A旧城以西3 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea