Spring5.X常见的注入方式

Posted 陈彦斌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring5.X常见的注入方式相关的知识,希望对你有一定的参考价值。

使用set方法注入

Video.java

package net.cybclass.sp.domain;

public class Video {
    private int id;
    private String title;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        System.out.println("Video setTitle被调用");
        this.title = title;
    }
}

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
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="video" class="net.cybclass.sp.domain.Video">
        <property name="id" value="9"></property>
        <property name="title" value="Spring5.X课程"></property>

    </bean>
</beans>

app.java

package net.cybclass.sp;

import net.cybclass.sp.domain.Video;
import net.cybclass.sp.domain.VideoOrder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class app {
    public static void main(String[] args) {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
        Video video=(Video) applicationContext.getBean("video");
        System.out.println(video);
    }
}

验证

使用带参的构造函数注入

Video.java

package net.cybclass.sp.domain;

public class Video {
    public Video(int id, String title) {
        System.out.println("Video 构造函数被调用");
        this.id = id;
        this.title = title;
    }

    private int id;
    private String title;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

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
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="video" class="net.cybclass.sp.domain.Video">
        <constructor-arg name="id" value="8"></constructor-arg>
        <constructor-arg name="title" value="Spring5.X课程"></constructor-arg>
    </bean>
</beans>

app.java

package net.cybclass.sp;

import net.cybclass.sp.domain.Video;
import net.cybclass.sp.domain.VideoOrder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class app {
    public static void main(String[] args) {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
        Video video=(Video) applicationContext.getBean("video");
        System.out.println(video);
    }
}

验证

POJO类型注入(property没有使用value属性,而是使用了ref属性)

    <bean id="video" class="net.cybclass.sp.domain.Video">
       <!--list 类型注入-->
        <property name="chapterList">
            <list>
                <value>第一章SpringBoot</value>
                <value>第二章Mybatis</value>
                <value>第三章Spring</value>
            </list>
        </property>
        <!--注入map-->
        <property name="videoMap">
            <map>
                <entry key="1" value="SpringCloud课程层"></entry>
                <entry key="2" value="面试宝典"></entry>
                <entry key="3" value="JavaWeb课程"></entry>
            </map>
        </property>
    </bean>
    <bean id="videoOrder" class="net.cybclass.sp.domain.VideoOrder">
        <property name="id" value="8"></property>
        <property name="outTradeNo" value="12312"></property>
        <property name="video" ref="video"></property>
    </bean>

List和Map注入

Video.java

package net.cybclass.sp.domain;

import java.util.List;
import java.util.Map;

public class Video {
    private int id;
    private String title;
    private List<String> chapterList;
    private Map<Integer, String> videoMap;

    public List<String> getChapterList() {
        return chapterList;
    }

    public void setChapterList(List<String> chapterList) {
        this.chapterList = chapterList;
    }

    public Map<Integer, String> getVideoMap() {
        return videoMap;
    }

    public void setVideoMap(Map<Integer, String> videoMap) {
        this.videoMap = videoMap;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

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
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="video" class="net.cybclass.sp.domain.Video">
       <!--list 类型注入-->
        <property name="chapterList">
            <list>
                <value>第一章SpringBoot</value>
                <value>第二章Mybatis</value>
                <value>第三章Spring</value>
            </list>
        </property>
        <!--注入map-->
        <property name="videoMap">
            <map>
                <entry key="1" value="SpringCloud课程层"></entry>
                <entry key="2" value="面试宝典"></entry>
                <entry key="3" value="JavaWeb课程"></entry>
            </map>
        </property>
    </bean>
</beans>

app.java

package net.cybclass.sp;

import net.cybclass.sp.domain.Video;
import net.cybclass.sp.domain.VideoOrder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class app {
    public static void main(String[] args) {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
        Video video=(Video) applicationContext.getBean("video");
        System.out.println(video.getChapterList());
        System.out.println(video.getVideoMap());
    }
}

验证

以上是关于Spring5.X常见的注入方式的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis怎么防止SQL注入

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

mybatis以及预编译如何防止SQL注入

Android片段和依赖注入

常见的三种注解注入方式对比

MyBatis怎么防止SQL注入