首页 > 其他分享 >day123- 自动装配xml

day123- 自动装配xml

时间:2023-08-04 19:57:36浏览次数:44  
标签:xml 装配 day123 bean 自动 赋值 public 属性

基于xml的自动装配

自动装配

根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类型属性赋值

模拟

controller

public class UserController {
    private UserService userService;
​
    public UserService getUserService() {
        return userService;
    }
​
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
​
    public void saveUser(){
        userService.savUser();
    }
}

 

service

public interface UserService {
    void savUser();
}
public class UserServiceImpl implements UserService {
​
    private UserDao userDao;
​
    public UserDao getUserDao() {
        return userDao;
    }
​
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
​
    @Override
    public void savUser() {
        userDao.saveUser();
    }
}

 

dao

public interface UserDao {
    void saveUser();
}
public class UserDaoImpl implements UserDao {
    @Override
    public void saveUser() {
        System.out.println("okokokokok");
    }
}

 

配置bean

使用bean标签的autowire属性设置自动装配效果

  1. 自动装配方式:byType

byType:根据类型匹配IOC容器中的某个兼容类型的bean,为属性自动赋值

若在IOC中,没有任何一个兼容类型的bean能够为属性赋值,则该属性不装配,即值为默认值null

若在IOC中,有多个兼容类型的bean能够为属性赋值,则抛出异常NoUniqueBeanDefinitionException

  1. 自动装配方式:byName

    byName:将自动装配的属性的属性名,作为bean的id在IOC容器中匹配相对应的bean进行赋值

  <bean id="userController" class="com.gu.spring.controller.UserController" autowire="byName">
<!--        <property name="userService" ref="userService"></property>-->
    </bean>
​
    <bean id="userService" class="com.gu.spring.service.impl.UserServiceImpl" autowire="byType">
<!--        <property name="userDao" ref="userDao"></property>-->
    </bean>
​
    <bean id="userDao" class="com.gu.spring.dao.impl.UserDaoImpl"></bean>

 

test

@Test
public void testAutowire(){
    ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("spring-autowire-xml.xml");
    UserController userController = ioc.getBean(UserController.class);
    userController.saveUser();

 


}

总结

/**
* 自动装配:
* 根据指定的策略,在ioc容器中匹配某个bean,自动为bean中的类类型属性或者接口类型的属性进行赋值
* 自动装备策略:
* bean标签中的 autowire=""
* 1.no,default:表示不装配,即bean中的属性不会自动匹配某个bean为属性赋值,此时属性使用默认值
* 2. byType: 跟胡要赋值的属性的类型,在ioc容器中匹配某个bean,为属性赋值
* 注意:
*     a> 若通过类型没有找到任何类型匹配的bean,此时的属性不装配,使用的是默认值
*         java.lang.NullPointerException
*     b> 若通过类型找到了多个类型匹配的bean,此时会抛出异常
*         NoUniqueBeanDefinitionException
*     总结:当使用byType实现自动装配时,ioc容器中有且只有一个类型匹配的bean能够为属性赋值
* 3. byName:将要复制的属性的属性名作为bean的id在ioc容器中匹配某个bean,为属性赋值
*     总结:当类型匹配的bean有多个时,此时可以使用byName实现自动装配
*/

over

标签:xml,装配,day123,bean,自动,赋值,public,属性
From: https://www.cnblogs.com/GUGUZIZI/p/17606848.html

相关文章

  • freeswitch的mod_xml_curl模块动态获取dialplan
     概述freeswitch是一款简单好用的VOIP开源软交换平台。mod_xml_curl模块支持从web服务获取xml配置,本文介绍如何动态获取dialplan配置。环境centos:CentOS release7.0(Final)或以上版本freeswitch:v1.6.20GCC:4.8.5dialplan查找流程我们在“switch_xml_parse_file”函......
  • Spring-1-透彻理解Spring XML的Bean创建--IOC
    学习目标上一篇文章我们介绍了什么是Spring,以及Spring的一些核心概念,并且快速快发一个Spring项目,实现IOC和DI,今天具体来讲解IOC能够说出IOC的基础配置和Bean作用域了解Bean的生命周期能够说出Bean的实例化方式一、Bean的基础配置问题导入问题1:在<bean>标签上如何配置别名......
  • python爬虫学习小记——lxml板块
    python爬虫学习小记——lxml板块lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。XPath的选择功能......
  • delegate open and send for XMLHttpRequest by rewrite the prototype
     varsendProxied=window.XMLHttpRequest.prototype.send;window.XMLHttpRequest.prototype.send=function(){varobject={};letdata=arguments[0]if(data&&data.forEach){data.forEach((value,key)=>obj......
  • Redis从入门到放弃(1):安装配置
    文章目录1.介绍2.优势3.安装Redis4.后台运行5.配置Redis5.1查看配置项5.2修改配置项5.3参数说明6.错误解决1.介绍Redis是一个高性能的开源key-value数据库。它被广泛应用于缓存、会话存储、实时分析、消息队列等场景。Redis具有以下三个主要特点:数据持久化:Redis支持......
  • DevChat VSCode 插件安装配置指南
    PlaythisarticleYourbrowserdoesnotsupporttheaudioelement.SPEED1XTableofcontents快速路径 1.安装Python3环境(3.8或以上)2.安装插件3.设置AccessKey错误排查 1.运行时未就绪2.编码错误3.“可执行权限”......
  • MeteoInfo的pom.xml
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0htt......
  • Spring-1-透彻理解Spring XML的必备知识
    学习目标能够说出Spring的体系结构能够编写IOC-DI快速入门思考:为什么学习Spring而不是直接学习SpringBoot1Spring介绍思考:我们为什么要学习Spring框架?工作上面Java拥有世界上数量最多的程序员最多的岗位需求与高额薪资95%以上服务器端还是要用Java开发专业角度简化开发,降低企......
  • web渗透测试(15):XML攻击
    在本节中,将详细介绍与XML相关的攻击。这些类型的攻击在Web服务和使用XPath从XML文件中检索配置设置的应用程序中很常见(例如,根据提供的组织名称了解他们需要使用哪些后端来验证用户)。 Example1<?phprequire_once("../header.php");?>Hello<?php$xml=simplexml_load_......
  • 智能化RFID耳机装配系统:提升效率、精准追踪与优化管理
    智能化RFID耳机装配系统:提升效率、精准追踪与优化管理在当今的智能化时代,无线射频识别技术(RFID)被广泛应用于各个行业。本文将介绍一种基于RFID技术的智能耳机装配案例,通过RFID技术实现耳机装配过程的自动化控制和质量管理,提高装配效率和产品可追溯性。RFID技术是一种利用无线电波进......