ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

七、利用setter实现对象依赖注入

2022-04-22 00:34:09  阅读:277  来源: 互联网

标签:依赖 Apple sweetApple context import setter public 注入


 依赖注入是指运行时将容器内对象利用反射赋给其他对象的操作,依赖注入有两种形式  1.基于setter方法注入对象  2.基于构造方法注入对象。

基于setter方法注入对象包含两种使用场景 

 1.利用setter实现静态数值注入(value)

<?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">
    <bean id="sweetApple" class="com.spring.ioc.entity.Apple">
        <!--IoC容器自动利用反射机制运行时调用setXXX方法为属性赋值-->
        <property name="title" value="红富士"></property>
        <property name="color" value="红色"></property>
        <property name="origin" value="欧洲"></property>
     <property name="price" value="19.8"></property> </bean> </beans>
package com.spring.ioc;

import com.spring.ioc.entity.Apple;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringApplication {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        Apple sweetApple = context.getBean("sweetApple", Apple.class);
        System.out.println(sweetApple.getTitle());
    }
}
//Apple的setTitle方法
/*public void setTitle(String title) {
System.out.println("title属性设置为:"+title);
this.title = title;
}*/

 

 

springIoC会将value中字符串自动转换成目标属性的类型,比如Intege

 2.利用setter方法实现对象注入(ref)

<?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">
    <bean id="sweetApple" class="com.spring.ioc.entity.Apple">
        <!--IoC容器自动利用反射机制运行时调用setXXX方法为属性赋值-->
        <property name="title" value="红富士"></property>
        <property name="color" value="红色"></property>
        <property name="origin" value="欧洲"></property>
        <property name="price" value="19.8"></property>
    </bean>

    <bean id="lily" class="com.spring.ioc.entity.Child">
        <property name="name" value="莉莉"></property>
        <!--利用ref注入依赖对象-->
        <property name="apple" ref="sweetApple"></property>
    </bean>
</beans>
package com.spring.ioc;

import com.spring.ioc.entity.Apple;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringApplication {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        Apple sweetApple = context.getBean("sweetApple", Apple.class);
        //System.out.println(sweetApple.getTitle());
    }
}

标签:依赖,Apple,sweetApple,context,import,setter,public,注入
来源: https://www.cnblogs.com/nanfeng66/p/16177143.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有