构造器通过构造方法来注入。前提是需要在类中写好有参构造。
Book类如下:
package com.kiong.spring6;
public class Book {
private String name;
private double priceL;
public Book(String name, double price) {
this.name = name;
this.priceL = price;
System.out.println("有参构造执行了。");
}
public Book() {
System.out.println("无参构造执行了");
}
public double getPriceL() {
return priceL;
}
public void setPriceL(double price) {
this.priceL = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void printInfo(){
System.out.println("图书"+name+"的价格是"+priceL+"元.");
}
}
beanBook.xml如下
<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!---->
<!-- <bean id="book" class="com.kiong.spring6.Book">-->
<!-- <property name="name" value="《理想国》"></property>-->
<!-- <property name="priceL" value="29.8" ></property>-->
<!-- </bean>-->
<bean id="bookCon" class="com.kiong.spring6.Book">
<constructor-arg name="name" value="《麦克白》"></constructor-arg>
<constructor-arg name="price" value="19.7"></constructor-arg>
</bean>
</beans>
TestBook类如下:
package com.kiong.spring6;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestBook {
@Test
public void testBookSetter(){
ApplicationContext context =
new ClassPathXmlApplicationContext("beanBook.xml");
Book book = (Book) context.getBean("bookCon");
book.printInfo();
}
}
运行结果如下