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

运行结果:

相关推荐
qmx_0719 分钟前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
为风而战27 分钟前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat
技术无疆2 小时前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
架构文摘JGWZ5 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
拾光师6 小时前
spring获取当前request
java·后端·spring
aPurpleBerry6 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j
我是苏苏6 小时前
Web开发:ABP框架2——入门级别的增删改查Demo
java·开发语言
xujinwei_gingko6 小时前
Spring IOC容器Bean对象管理-Java Config方式
java·spring
2301_789985946 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
IT学长编程7 小时前
计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·毕业设计·springboot·毕业论文·计算机毕业设计选题·计算机毕业设计开题报告·教师科研管理系统