Anaconda 单例模式 NTFS权限 vue 正则表达式 powershell debugging input laravel4 百度seo关键词优化 ddos压力测试 前端项目实战 oracle数据库版本 jq入口函数 python使用教程 java使用 搭建java开发环境 java数据类型 java学习基础 java方法重载 java中泛型 linux用户 高效能人士的七个习惯pdf win10计算器下载 crazytalk 源计划艾克 微信骰子表情包 摩尔斯电码翻译器在线 程序卸载 华为下拉开关设置 机械键盘个别键位失灵 cubase下载 文字转语音软件免费版 kafka权威指南 kz文件 优酷app播放器下载 dnf风神加点 小米手环怎么连接手机 苹果x怎么用 dh浩劫天赋
当前位置: 首页 > 学习教程  > 编程语言

Spring学习笔记——第四部分 Dependency Injection(依赖注入)

2021/1/13 19:35:17 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

Spring学习笔记——第四部分 Dependency Injection(依赖注入)1. Constructor-based Dependency Injection(构造器注入)2. Setter-based Dependency Injection(set方法注入)【重点】3. 拓展方式注入3.1 p-na…

Spring学习笔记——第四部分 Dependency Injection(依赖注入)

  • 1. Constructor-based Dependency Injection(构造器注入)
  • 2. Setter-based Dependency Injection(set方法注入)【重点】
  • 3. 拓展方式注入
    • 3.1 p-namespace and c-namespace(p命名空间与c命名空间))
    • 3.2 注意点

1. Constructor-based Dependency Injection(构造器注入)

IOC创建对象的方式

  1. 使用无参构造函数
  2. 使用有参构造函数
    <!--第一种:下标赋值-->
    <bean id="user" class="com.zhang.pojo.User">
        <constructor-arg index="0" value="张作鹏1"/>
    </bean>
    
    <!--第二种:通过类型创建,不建议使用-->
    <bean id="user" class="com.zhang.pojo.User">
        <constructor-arg type="java.lang.String" value="张作鹏2"/>
    </bean>
    
    <!--第三种:直接通过参数名-->
    <bean id="user" class="com.zhang.pojo.User">
        <constructor-arg name="name" value="张作鹏3"/>
    </bean>

总结:在配置文件加载的时候,容器中管理的对象就已经初始化了。

2. Setter-based Dependency Injection(set方法注入)【重点】

  1. 复杂类型(部分代码)
public class Address {
    private String address;
}
  1. 真实测试对象(部分代码)
public class Student {
    private String name;
    private Address address;
    private String[] books;
    private List<String> hobbies;
    private Map<String,String> card;
    private Set<String> games;
    private Properties info;
    private String wife;
}
  1. applicationContext.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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="TYUTstudent" class="com.zhang.pojo.Student">
        <!--第一种:普通值注入,value-->
        <property name="name" value="TYUT张作鹏"/>
    </bean>

</beans>
  1. 测试类
public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = (Student) context.getBean("TYUTstudent");
        System.out.println(student.getName());
    }
  1. 完善注入信息
<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="address" class="com.zhang.pojo.Address"/>

    <bean id="TYUTstudent" class="com.zhang.pojo.Student">
        <!--普通值注入,value-->
        <property name="name" value="TYUT张作鹏"/>
        <!--bean注入,ref-->
        <property name="address" ref="address"/>
        <!--数组-->
        <property name="books">
            <array>
                <value>《java学习》</value>
                <value>《python学习》</value>
                <value>《spring学习》</value>
            </array>
        </property>
        <!--List-->
        <property name="hobbies">
            <list>
                <value>写代码</value>
                <value>吃东西</value>
            </list>
        </property>
        <!--Map-->
        <property name="card">
            <map>
                <entry key="身份证" value="140729"/>
                <entry key="银行卡" value="132546"/>
            </map>
        </property>
        <!--set-->
        <property name="games">
            <set>
                <value>LOL</value>
                <value>连连看</value>
            </set>
        </property>
        <!--null-->
        <property name="wife">
            <null/>
        </property>
        <!--properties-->
        <property name="info">
            <props>
                <prop key="学号">2018005624</prop>
                <prop key="性别"></prop>
            </props>
        </property>
    </bean>

</beans>

3. 拓展方式注入

3.1 p-namespace and c-namespace(p命名空间与c命名空间))

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--p命名空间注入,可以直接注入属性的值:property-->
    <bean id="user" class="com.zhang.pojo.User" p:name="P张作鹏" p:age="18"/>
    <!--c命名空间注入,通过构造器注入:constructs-->
    <bean id="user2" class="com.zhang.pojo.User" c:name="C张作鹏" c:age="18"/>

</beans>

在这里插入图片描述

在这里插入图片描述

3.2 注意点

两个命名空间不能直接使用,必须导入xml约束。

xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"

本文链接: http://www.dtmao.cc/news_show_600115.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?