第一种:构造器参数注入

第二种:setter方法属性注入(setter方法的规范-JavaBean规范)

第三种:接口注入

Bean 属性的注入:对一个对象的属性的赋值

1.构造器参数注入:

    public class User{

      private String username;

      public User(String username){

        this.username = username;

}

}

=====================================================================================

2.接口注入

ServletRequestAware接口:

      public class UsrAction implements ServletRequestAware{

        public void setServlet(request){

        this.request = request;

}

      private HttpServletRequest request;

}

=====================================================================================

3.setter方法注入,这个之前也有的解释这里就重新打一边,理一理

      public class User{

        private String username;

        public void setUsername(String username){

          this.username = username

}

}

//前一篇我所写的参数是UserDao所以请勿搞混名字,

Spring 框架规范中通过配置文件配置的方式,只支持构造器参数注入和setter方法属性注入,不支持接口注入 !

=====================================================================================

在这里写一个构造器注入

1.创造一个Car类

package com.demo.gzqzhuru;
//构造器注入
public class Car {
private String name;
private Double price;
private Integer id;

//构造的时候注入属性值
public Car(String name, Double price, Integer id) {

this.name = name;
this.price = price;
this.id = id;
}

@Override
public String toString() {
return "Car [name=" + name + ", price=" + price + ", id=" + id + "]";
}

}

2.在全局文件中配置时候要使用construor-arg标签

<!-- 构造器注入 -->

<bean id="car" class="com.demo.gzqzhuru.Car">
<!--
<constructor-arg :进行构造器注入,注意Car类中必须有对应的构造方法
两类:
1类:指定哪个参数来赋值
index:使用索引定位哪个参数
name:使用参数名来定位
type:使用数据类型来进行定位
2类:赋具体什么值
value:简单数据类型,字符串,数字等
ref:复杂类型,主要就只是bean对象,值要写bean的名字
-->
<constructor-arg index="0" value="1001"/>
<constructor-arg name="name" value="红旗" />
<constructor-arg type="java.lang.Double" value="999999999999d"/>
</bean>

3.最后编写test类

public class SpringCarTest {
public void test() {
ApplicationContext ac = new
ClassPathXmlApplicationContext("spring-context.xml");
Car car= (Car) ac.getBean("car");
System.out.println(car);
}
}

//注意最后的导包,请勿导错了,是以下两种

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

一切完成后就能获得最终结果了。

spring入门 依赖入注的三种方式(1)的更多相关文章

  1. Spring学习之实例化bean的三种方式

    实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...

  2. Spring MVC异常统一处理的三种方式

    Spring 统一异常处理有 3 种方式,分别为: 使用 @ ExceptionHandler 注解 实现 HandlerExceptionResolver 接口 使用 @controlleradvi ...

  3. 【spring Boot】spring boot获取资源文件的三种方式【两种情况下】

    首先声明一点,springboot获取资源文件,需要看是 1>从spring boot默认的application.properties资源文件中获取 2>还是从自定义的资源文件中获取 带 ...

  4. spring中创建bean对象的三种方式以及作用范围

    时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...

  5. 解决dubbo注册zookepper服务IP乱入问题的三种方式

    最近做一个项目引入了dubbo+zookepper的分布式服务治理框架.在应用的发布的时候出现一个怪问题.zookepper服务是起在开发服务器192.168.23.180上.本机起应用服务提供者注册 ...

  6. @Autowired注解和启动自动扫描的三种方式(spring bean配置自动扫描功能的三种方式)

    前言: @Autowired注解代码定义 @Target({ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD, Elemen ...

  7. Spring 依赖注入(DI) 的三种方式 和 对集合类型的注入

    // 分别省略了getter setter public class Student { private String name; private int age; private Teacher t ...

  8. Spring加载Properties配置文件的三种方式

    一.通过 context:property-placeholder 标签实现配置文件加载 1) 用法: 1.在spring.xml配置文件中添加标签 <context:property-plac ...

  9. Spring3实战第二章第一小节 Spring bean的初始化和销毁三种方式及优先级

    Spring bean的初始化和销毁有三种方式 通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法: 优先级第二通过 <bean& ...

随机推荐

  1. Xcode 添加pch 文件

    搜索prefix 找到 APPle Clang Language  ---> 将precompile Prefix Header 改为YES ----> 再输入$(SRCROOOT)/Ot ...

  2. Python之删除空白

    Python能够找出字符串开头.末尾.两端多余的空白. lstrip()方法可以剔除字符串开头的空白: rstrip()方法可以剔除字符串末尾的空白: strip()可以剔除字符串两端的空白: fav ...

  3. [经验分享] MySQL Innodb表导致死锁日志情况分析与归纳【转,纯学习】

    在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志. 两个sql语句如下: (1)insert into backup_ta ...

  4. ubuntu16.04中如何启用floodlight的其中一种方式

    1. 提前一台安装好mininet,另一台安装好floodlight 2. 在mininet里面的custom文件夹下自定义文件ProjectGroup10_Topology.py from mini ...

  5. javascript 4.2

    element.value="......"也可以为属性设置新的值 setAttribute()方法是“第一级DOM”的组成部分之一,DOM是适用于多种环境和多种程序设计语言的通用 ...

  6. Python练习十一

    1.写一个程序,提示输入整数X,然后计算从1到X连续整数的和. num = int(input('please the input number:')) sum_num = 0 for i in ra ...

  7. creator rotationY的问题

    最近在做一个2D的小游戏,碰撞方面由于懒,就直接使用cocos自带的物理组件RigidBody了. 但是在父节点挂载RigidBody之后,会导致设置rotationY时失效,具体原因没有深查,估计是 ...

  8. 将TUM数据集的RGB-D数据集转化为klg格式

    1.在github上下载代码png_to_klg git clone https://github.com/HTLife/png_to_klg 2.将png_to_klg目录下的associate.p ...

  9. javascript 创建节点和新增节点

    createElement(tabName) 创建一个为tagName的新元素节点 ANode.appendChild(BNode)把B节点追加至A节点的末尾 insertBefore(ANode,B ...

  10. 名字top500字典 各种格式及python脚本

    原文件名字top500 链接: https://pan.baidu.com/s/1cv0jPYb1-EBceoZz3QNvgg 密码: bat5 中文名字 链接: https://pan.baidu. ...