spring为方便不同的需求,为我们提供了3中不同的注入方式分别是set、get方法注入,构造注入还有p命名空间注入,老规矩,直接上代码

首先创建实体类Student

 public class Student {
private String name;
private int age; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} //重写toString方法,方便测试
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}

第一种set注入,以下是核心配置文件

 <?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--set、get注入-->
<bean id="student" class="com.lhf.entity.Student">
<property name="name" value="张三"/>
<property name="age" value="16"/>
</bean>
</beans>

测试类:

 public class App
{
public static void main( String[] args )
{
//spring读取xml文件
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//从spring容器中获取service层的对象
Student bean = (Student) context.getBean("student");
//输出
System.out.println(bean);
}
}

第二种,构造注入

创建实体类,并写出成员的构造方法,这里建议将该类的无参构造也写上

 public class Student {
private String name;
private int age; public Student() {
} public Student(String name, int age) {
this.name = name;
this.age = age;
} //重写toString方法,方便测试
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}

配置文件:(在进行构造注入的时候,我们需要按照参数的顺序逐个进行注入,否则回报错。在不同的场合我们需要进行的参数赋值也是不同的,所以构造注入也是有局限性的,至于构造注入那一定也是有他的好处的,比如在对象实例化的时候我们就可以将参数的赋值,效率高)

   <bean id="student" class="com.lhf.entity.Student">
<!--可以通过参数类型进行注入-->
<constructor-arg type="java.lang.String" value="张三"/>
<!--也可以通过参数在构造方法中的位置进行注入-->
<constructor-arg index="1" value="16"/>
</bean>

  

第三种,p命名空间:(这种注入说白了就是set注入的简化,也就是说,我们还需要重写set方法,这里我就不写了)

<bean id="student" class="com.lhf.entity.Student" p:name="张三" p:age="16"/>

以上三种方法测试类相同,这里就投个懒只写一次,至于结果自行运行

以下是数组和集合的注入方式

实体类:

 public class Student {
private Map<String,Integer> map;//map集合注入
private Set<String> set;//set集合的注入
private List<String>lists;//list集合注入
private Properties properties;//properties注入 public void setMap(Map<String, Integer> map) {
this.map = map;
} public void setSet(Set<String> set) {
this.set = set;
} public void setLists(List<String> lists) {
this.lists = lists;
} public void setProperties(Properties properties) {
this.properties = properties;
}
//重写toString方法,方便测试 @Override
public String toString() {
return "Student{" +
"map=" + map +
", set=" + set +
", lists=" + lists +
", properties=" + properties +
'}';
}
}

配置文件

 <bean id="student" class="com.lhf.entity.Student">
<property name="lists">
<list>
<value>张三</value>
<value>李四</value>
</list>
</property>
<property name="map">
<map>
<entry key="张三" value="16"></entry>
<entry key="李四" value="18"></entry>
</map>
</property>
<property name="set">
<set>
<value>张三</value>
<value>李四</value>
</set>
</property>
<property name="properties">
<props>
<prop key="张三">22</prop>
<prop key="李四">66</prop>
</props>
</property>
</bean>

Spring-IOC(DI)的三种注入方式的更多相关文章

  1. Spring IOC 中三种注入方式

    项目错误知识点记录 正文 最近在项目的时候,用到Spring框架,Spring框架提供了一种IOC的自动注入功能,可以很轻松的帮助我们创建一个Bean,这样就省的我们四处写new Object()这样 ...

  2. spring ioc三种注入方式

    spring ioc三种注入方式 IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转 什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容 ...

  3. Spring IOC 三种注入方式

    1.    接口注入 2.    setter注入 3.    构造器注入 对象与对象之间的关系可以简单的理解为对象之间的依赖关系:A类需要B类的一个实例来进行某些操作,比如在A类的方法中需要调用B类 ...

  4. Spring IOC以及三种注入方式

    IOC是spring的最基础部分,也是核心模块,Spring的其他组件模块和应用开发都是以它为基础的.IOC把spring的面向接口编程和松耦合的思想体现的淋漓尽致. IOC概念 IOC(Invers ...

  5. Spring学习日记01_IOC_xml的三种注入方式

    什么是IOC 控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理 使用IOC目的:为了耦合度降低 做入门案例就是IOC实现 IOC底层原理 xml解析 工厂模式 反射 原始方式 cla ...

  6. .NetCore中三种注入方式的思考

    该篇内容由个人博客点击跳转同步更新!转载请注明出处! .NetCore彻底诠释了"万物皆可注入"这句话的含义,在.NetCore中到处可见注入的使用.因此core中也提供了三种注入 ...

  7. Spring IOC 三种注入方式(构造器,setter,接口)

    Spring的依赖注入有三种方式: 1,构造器注入 2,setter注入 3,接口注入 下面我给大家介绍一下这三种注入 1.构造器注入 构造器注入主要是依赖于构造方法去实现,构造方法可以是有参也可以是 ...

  8. Spring的三种注入方式(Setter、构造函数和自动注入)

    一.Setter注入 这里我是希望在Student.java中调用Course.java中的内容. public class Course { public String name = "数 ...

  9. Spring IOC三种注入方式(接口注入、setter注入、构造器注入)(摘抄)

    IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转, Spring 框架的核心基于控制反转原理. 什么是控制反转?控制反转是一种将组件依赖关系的创建和管理置于程序外部的技 ...

  10. Spring学习笔记(6)——IoC的三种注入方式

    1.接口注入(不推荐) 2.构造器注入(死的应用) 3.getter,setter方式注入(比较常用) Type1 接口注入 我们常常借助接口来将调用者与实现者分离.如: public class C ...

随机推荐

  1. 「不会」Min25筛

    大概的思路是把所有数分成质数和合数考虑 对于质数,必须找出一个很简单的完全积性函数和所求函数拟合 把所有数当做质数看待求个前缀和,然后再枚举合数的最小质因子把合数T掉 枚举到根号n,即可保证把n以内的 ...

  2. [极客大挑战 2019]LoveSQL

    0x00 知识点 1:万能密码登陆 2:登陆后直接使用联合查询注入 0x01解题 登陆后进行简单测试发现是字符型注入 order by 测试数据库有多少字段 发现在4的时候报错,没有过滤,直接进行注入 ...

  3. 增删改查(简单版&连接数据库)

    这个博客也是补充之前的学习内容: 项目总述:这个增删改查我以,选课名称,选课教室,选课教师基本信息,作为主要的信息来源.主要对这些信息最基本的增删改查 详细的分析与说明: 1.首先在src文件里定义四 ...

  4. WAMP常用环境配置

    自定义网站目录 修改目录位置 如下图,打开httpd.conf文件. 查找DocumentRoot(两处),做如下修改: #demo为自定义网站目录,下面不再说明 DocumentRoot " ...

  5. 基于SSM开发在线考试系统 Java源码

    实现的关于在线考试的功能有:用户前台:用户注册登录.查看考试信息.进行考试.查看考试成绩.查看历史考试记录.回顾已考试卷.修改密码.修改个人信息等,后台管理功能(脚手架功能不在这里列出),科目专业管理 ...

  6. java相关书籍及网站

    原文链接:http://developer.51cto.com/art/201408/448609.htm 对于 Java™ 语言开发人员来说,信息过量是一个真正的问题.每个新入行的程序员都要面临一个 ...

  7. PAT Advanced 1074 Reversing Linked List (25) [链表]

    题目 Given a constant K and a singly linked list L, you are supposed to reverse the links of every K e ...

  8. 题解 P5837 【[USACO19DEC]Milk Pumping】

    这题其实想法挺简单的,因为他只需要简单的把每个点的花费和流量用dp记下来就好了 1.怎么记: 首先考虑dp的状态.由于所在的点和流量都要记,所以dp开二维,一维记所在的点,另一维记去哪 //dp[i] ...

  9. CCPC2019网络赛

    2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛 A 题意:找到最小的正整数 C 使得 (A^C)&(B^C) 最小. \(A,B \le 10^9\) 签到题.这个C取 A& ...

  10. Centos7安装Xrdp远程桌面

    Xrdp是Microsoft远程桌面协议RDP的一个开源实现,它允许以图像方式控制远程系统. 测试环境 服务端: CentOS Linux release 7.7.1908 (Core) 客户端: W ...