spring入门 依赖入注的三种方式(1)

时间:2023-03-08 22:12:38

第一种:构造器参数注入

第二种: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;

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