一、Setter注入

这里我是希望在Student.java中调用Course.java中的内容。

public class Course {
public String name = "数学";} Course类很简单只是定义了一个name并赋值了"数学"。 public class Student { //Student就是注入的目的地,Course是被注入的对象
//想要在Student中使用Course类
private Course course;
//如何注入简单类型
private int age;
private String name; public void setAge(int age) {
this.age = age;
} public void setName(String name) {
this.name = name;
} //setter方式注入一定要生成set方法
public void setCourse(Course course) {
this.course = course;
} public void shangke (){
System.out.println(age+"岁学生"+name+"正在上"+course.name+"课"); } }

这是Student类,创建了一个Course类,并生成了set方法

以上步骤完成之后就是怎么把这两者关联起来了

这就要在配置文件中applicationContext.xml文件中配置相应的bean了

<bean id="course" class="com.niit.DI.Course"></bean>
<bean id="student" class="com.niit.DI.Student">
<!-- 以下代码跟Student类中的set方法相关 -->
<!-- name就写Student中被注入变量的名称 -->
<!-- ref代表spring会按照course为模板去new一个course并赋值到course中 -->
<property name="course" ref="course" ></property>
<property name="age" value="20"></property>
<property name="name" value="biu"></property>
</bean>

这样一个简单的set方式注入就完成了!

二、构造函数注入

为了方便操作,这里我们依旧使用Course类作为注入的对象。往Teacher类中注入

Course类。

public class Teacher {

//也要在Teacher类里面访问Course类
private Course course;
private int age;
private String name; //使用构造函数
public Teacher(Course course,int age,String name){
this.course = course;
this.age = age;
this.name = name; } public void shangke(){
System.out.println("老师正在给"+age+"岁的"+name+"上"+course.name+"课");
}
}

这是Teacher类中的内容这里使用了一个构造函数Teacher。

配置文件中的内容实现注入

<bean id="teacher" class="com.niit.DI2.Teacher">
<!-- 构造函数方式注入的时候必须配置构造函数的参数 -->
<constructor-arg name="course" ref="course"></constructor-arg>
<constructor-arg name="age" value="20"></constructor-arg>
<constructor-arg name="name" value="liu"></constructor-arg>
</bean>

是不是很简单,一下就完成后了!

三、自动注入

依旧使用Course类,这次是要把Course丢给Person类。

自动注入的时候使用Set方法和构造函数的方法都行,看个人喜好了,官方是更推荐构造函数的方法来进行注入的。这里使用的是setter方式注入

public class Person {
Course course;
public void setCourse(Course course) {
this.course = course;
} public void shangke(){
System.out.println("有人正在上"+course.name+"课");
}
}

配置文件中的配置

<!-- 自动注入 -->

<bean id="course" class="com.niit.DI.Course"></bean>

<bean id="person" class="com.niit.DI3.Person" autowire="byName"> </bean>

这里的autowire属性稍微做下笔记

byName 从配置文件中查找跟被注入属性名称相同的been
  byType 按照被注入属性的类型从配置文件中查找跟被注入属性相同的类型
     注意:返回多个会异常
  default 
  constructor 按照构造函数参数的方法去查找

三种注入的方式全部完成了是不是觉得很简单!

Spring的三种注入方式(Setter、构造函数和自动注入)的更多相关文章

  1. Spring bean三种创建方式

    spring共提供了三种实例化bean的方式:构造器实例化(全类名,反射).工厂方法(静态工厂实例化   动态工厂实例化)和FactoryBean ,下面一一详解: 1.构造器实例化 City.jav ...

  2. Spring事务-三种实现方式

    一.引入JAR文件: 二.开始搭建分层架构---创建账户(Account)和股票(Stock)实体类 Account: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  3. Spring MVC三种返回方式

    spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. 下面一一进行说明: 1.ModelAndV ...

  4. spring ioc三种注入方式

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

  5. Spring IOC 三种注入方式

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

  6. Spring的三种通过XML实现DataSource注入方式

    Spring的三种通过XML实现DataSource注入方式: 1.使用Spring自带的DriverManagerDataSource 2.使用DBCP连接池 3.使用Tomcat提供的JNDI

  7. Spring中三种配置Bean的方式

    Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...

  8. 【转】Spring 中三种Bean配置方式比较

    今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...

  9. Spring 中三种Bean配置方式比较

    今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基 ...

  10. (转)Spring的三种实例化Bean的方式

    http://blog.csdn.net/yerenyuan_pku/article/details/52832793 Spring提供了三种实例化Bean的方式. 使用类构造器实例化. <be ...

随机推荐

  1. java线上服务问题排查

    1.业务日志相关 假设系统出现异常或者业务有异常,首先想到的都是查看业务日志 查看日志工具: less 或者more grep tail -f filename 查看实时的最新内容 ps:切忌vim直 ...

  2. php5.2以下版本无json_decode函数的解决办法

    function json_decode2($json) { $comment = false; $out = '$x=';   for ($i=0; $i<strlen($json); $i+ ...

  3. (LeetCode 41)First Missing Positive

    Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] ...

  4. Drupal Working with nodes, content types and fields

    一个大概的总结,便于对接下来的学习进行理解和运行 在使用Drupal过程中.站点中的内容的不论什么一个部分都是一个节点(node),而每一个节点中又包括了一些默认的字段(fields). 值得说明的是 ...

  5. 跨站点脚本编制-XSS 描述及解决方法

    跨站点脚本编制可能是一个危险的安全性问题,在设计安全的基于 Web 的应用程序时应该考虑这一点.本文中,描述了这种问题的本质.它是如何起作用的,并概述了一些推荐的修正策略. 当今的大多数网站都对 We ...

  6. java 设计模式大全

    在线学习网址: http://www.runoob.com/design-pattern/

  7. Hadoop,HBase集群环境搭建的问题集锦(二)

    10.艾玛, Datanode也启动不了了? 找到log: Caused by: java.net.UnknownHostException: Invalid host name: local hos ...

  8. 修改MySQL数据文件的位置

    1:查看MySQL服务名称 2:管理员启动控制台 3:修改配置文件my.ini中数据文件的位置,[注]修改完成之后要把响应的数据文件从旧目录拷贝到新目录当中. 4:重新启动服务 5:登录数据库查看数据 ...

  9. linux bash Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    在linux下配置shell参数说明 前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid ...

  10. PLSQL报错:"动态执行表不可访问,本会话的自动统计被禁止"

      PLSQL报错:"动态执行表不可访问,本会话的自动统计被禁止" CreationTime--2018年7月16日19点26分 Author:Marydon 1.情景展示 2.解 ...