Trong bài trước mình đã giới thiệu với các bạn về
Constructor Injection trong Spring, nhưng bởi vì chúng ta có thể khai
báo constructor cho một object theo nhiều cách khác nhau, nên trong bài
viết này mình xin nói rõ thêm cho các bạn biết làm thế nào để khởi tạo
đối tượng trong khung chứa của Spring theo các cách khác nhau đó.
Hãy xem xét ví dụ sau nhé:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public class Student {
private String name;
private int age;
public Student(String name) {
this.name = name;
}
public Student(int age) {
this.age = age;
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
|
Như các bạn thấy, đối tượng
Student của mình có ba constructor, hai trong số đó là overload. Bây giờ chúng ta hãy xem xét từng trường hợp cụ thể nhé!
Trước tiên, mình cần tạo project trước
Application code
|
public class Application {
public static void main(String[] args) {
BeanFactory context = new ClassPathXmlApplicationContext("spring.xml");
Student student = (Student) context.getBean("student");
System.out.println(student.toString());
}
}
|
OK, bắt đầu nào.
Đối với những constructor overload, chúng ta cần chỉ rõ loại dữ liệu
của các tham số trong từng constructor các bạn ạ! Ví dụ giờ mình cần
khởi tạo đối tượng Student với tên là “Khanh”. Mình sẽ khai báo trong
khung chứa của Spring như sau:
|
id="student" class="com.huongdanjava.springexample.Student">
type="java.lang.String" value="Khanh" />
|
Với cách khai báo này, Spring sẽ gọi đến constructor
|
public Student(String name) {
this.name = name;
}
|
để khởi tạo đối tượng Student bởi vì biến
name ở đây kiểu dữ liệu là String.
Kết quả:
|
Student [name=Khanh, age=0]
|
Nếu bây giờ mình cần khởi tạo đối tượng Student với tuổi là 30, thì mình cần thay đổi kiểu dữ liệu, cụ thể như sau:
|
id="student" class="com.huongdanjava.springexample.Student">
type="int" value="30" />
|
Lúc này, Spring sẽ gọi đến constructor
|
public Student(int age) {
this.age = age;
}
|
để khởi tạo đối tượng Student và kết quả sẽ như sau
|
Student [name=null, age=30]
|
Đối với những constructor có nhiều tham số, chúng ta có thể khai báo chúng như sau, theo thứ tự lần lượt từng tham số:
|
id="student" class="com.huongdanjava.springexample.Student">
value="Khanh" />
value="30" />
|
Nếu các bạn muốn khai báo các tham số theo những thứ tự khác nhau, chúng ta có thể khai báo như sau:
|
<bean id="student" class="com.huongdanjava.springexample.Student">
<constructor-arg index="1" value="30" />
<constructor-arg index="0" value="Khanh" />
</bean>
|
Giá trị của index bắt đầu từ 0 nhé các bạn.
Kết quả
|
Student [name=Khanh, age=30]
|
0 nhận xét:
Đăng nhận xét