spring中DI依赖注入的两种方式set方法注入(property )、构造器注入(constructor-arg)
依赖注入:
类有属性,创建过程中向属性赋值
1.创建实体类:
public class Book {
private String name;
private String auth;
//set
public void setName(String name) {
this.name = name;
}
public void setAuth(String auth) {
this.auth = auth;
}
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", auth='" + auth + '\'' +
'}';
}
//构造器
public Book(String name, String auth) {
this.name = name;
this.auth = auth;
}
public Book() {
}
2.测试:
public static void main(String[] args) {
//传统方式---原生态
//set注入属性值
Book book = new Book();
book.setAuth("c++");
book.setName("name");
//构造器注入属性值
Book book1 = new Book("java", "李白");
}
}
原生态的方式进行set和构造器的赋值方式在new创建对象时进行属性的赋值
spring依赖注入的两种方式
第一种set方法注入(property标签)
实体类同上
3.spring配置文件bean.xml
//bean创建对象
<!--set方法注入:赋值-->
<bean id="book" class="com.guigu.dl.Book">
<property name="name" value="java"></property>
<property name="auth" value="spring注入方式set方法注入"></property>
</bean>
<!--set方法注入:赋值-->
4.测试:
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
//根据id获取bean对象
Book book =(Book) context.getBean("book");
System.out.println("book = " + book);
//根据id和类型获取bean对象
Book book1 = context.getBean("book", Book.class);
System.out.println("book1 = " + book1);
第二种构造器注入
1.创建类。定义属性。生成构造方法(constructor-arg标签)
bean.xml
<!--构造方法注入-->
<bean id="bookCon" class="com.guigu.dl.Book">
<constructor-arg name="name" value="mysqlocp"></constructor-arg>
<constructor-arg name="auth" value="oracle"></constructor-arg>
<!--构造方法注入-->
</bean>
测试:
//根据id获取bean对象
Book bookCon = (Book)context.getBean("bookCon");
System.out.println("bookCon = " + bookCon);