Nếu bean có phạm vi yêu cầu, @PostConstruct sẽ được thực thi mỗi lần. Nó sẽ được gọi sau khi bean được quản lý được khởi tạo, nhưng trước khi đậu được đặt trong phạm vi. Phương thức như vậy không có đối số, trả về void và có thể không khai báo một ngoại lệ đã kiểm tra được ném. Phương thức có thể công khai, được bảo vệ, riêng tư hoặc gói riêng tư. Nếu phương thức ném một ngoại lệ không được kiểm tra, việc thực thi JSF không được đặt bean được quản lý vào dịch vụ và không có thêm phương pháp nào về cá thể bean được quản lý sẽ được gọi.
public TrainingClassForm() {
}
@PostConstruct
public void init() {
if (this.trainingListModel.getListDataModel() != null) {
this.trainingListModel.getAllTrainingClasses();
}
}
reffering bạn this question of stack
Trong một bean được quản lý, @PostConstruct
được gọi sau khi các nhà xây dựng đối tượng Java thông thường.
khi hàm tạo được gọi, bean chưa được khởi tạo - nghĩa là không có phụ thuộc nào được tiêm. Trong phương pháp @PostConstruct
đậu được khởi tạo đầy đủ và bạn có thể sử dụng phụ thuộc
@PostConstruct
là hợp đồng mà đảm bảo rằng phương pháp này sẽ được gọi chỉ một lần trong vòng đời đậu. Nó có thể xảy ra (mặc dù không chắc) rằng một hạt được instantiated nhiều lần bởi container trong nội bộ của nó làm việc, nhưng nó đảm bảo rằng @PostConstruct
sẽ được gọi chỉ một lần.
Nếu lớp học của bạn thực hiện tất cả khởi tạo của nó trong hàm tạo, thì @PostConstruct
thực sự là thừa.
Tuy nhiên, nếu lớp của bạn có các phụ thuộc được chèn bằng phương thức setter, thì hàm khởi tạo của lớp không thể khởi tạo hoàn toàn đối tượng và đôi khi một số khởi tạo cần được thực hiện sau khi tất cả các phương thức setter đã được gọi, do đó trường hợp sử dụng là @PostConstruct
Ngoài ra see this và this
[Tại sao sử dụng @PostConstruct?] (Http://stackoverflow.com/q/3406555/1055089) – Vrushank