Nếu bỏ dòng @Component thì class VNEngine sẽ không phải là bean, sẽ không được Spring tìm đến và sử dụng. Nên nó sẽ tìm các bean khác có implements Engine và inject vào. Còn nếu không tìm được class nào thì... bạn demo thử là biết thôi.
Nếu khi tạo module nào đó, mà module đó cần một module khác phụ thuộc, thì IoC sẽ tìm trong IoC container xem có không, nếu có thì inject vào, nếu chưa thì tạo mới, bỏ vào container và inject vào. Mình chưa hiểu nó sẽ tạo mới như nào?
@Component
class VNEngine implements Engine {
...
}
@Component
class Car {
// Tìm object tương ứng với Engine và chèn (inject) vào đây
@Autowired
private Engine engine;
}
Trường hợp này thì IoC container sẽ có VNEngine và nó sẽ tự động inject vào Engine trong class Car phải ko nhỉ? Nếu không có
@Component
class VNEngine implements Engine {
...
}
ở đoạn code trên thì nó sẽ tạo mới kiểu gi nhỉ? thanks ad
ở bài này thì container khi khởi động sẽ chạy dưới user root (vì trong Dockerfile ta ko nói gì tới USER), và khi bạn exec vào container để chạy command artisan thì nó cũng là root luôn -> file tạo ra dưới quyền root -> nhưng do ta đang mount volume sync môi trường ngoài và trong, nên ở môi trường ngoài bạn cũng sẽ thấy file đó dưới quyền root.
1 trong những cách nhanh đó là bạn cho user ở môi trường ngoài (local) của bạn về dưới group root là đc rồi
ở bài này thì container khi khởi động sẽ chạy dưới user root (vì trong Dockerfile ta ko nói gì tới USER), và khi bạn exec vào container để chạy command artisan thì nó cũng là root luôn -> file tạo ra dưới quyền root -> nhưng do ta đang mount volume sync môi trường ngoài và trong, nên ở môi trường ngoài bạn cũng sẽ thấy file đó dưới quyền root.
1 trong những cách nhanh đó là bạn cho user ở môi trường ngoài (local) của bạn về dưới group root là đc rồi
thật ra trong bài lúc đó mình làm hơi rườm ra, mình tự cài docker-compose. Thay vì đó ta có thể dùng trực tiếp image có docker-compose luôn. Ở dòng đầu tiên trong file .gitlab-ci.yml đổi thành:
image: docker/compose:1.29.2
Bạn có thể xem tag cho docker-compose ở đây. Và phần tự cài docker-compose bằng python (pip) ko cần nữa
THẢO LUẬN
thắc mắc đã dc giải đáp
@tonghoangvu nếu có nhiều bean implements Engine thì nó dựa vào đâu để inject bean tương ứng vậy ah?
@tonghoangvu cảm ơn ad.
Nếu bỏ dòng
@Componentthì classVNEnginesẽ không phải là bean, sẽ không được Spring tìm đến và sử dụng. Nên nó sẽ tìm các bean khác có implementsEnginevà inject vào. Còn nếu không tìm được class nào thì... bạn demo thử là biết thôi.Nếu khi tạo module nào đó, mà module đó cần một module khác phụ thuộc, thì IoC sẽ tìm trong IoC container xem có không, nếu có thì inject vào, nếu chưa thì tạo mới, bỏ vào container và inject vào. Mình chưa hiểu nó sẽ tạo mới như nào?
@Component class VNEngine implements Engine { ... }
@Component class Car { // Tìm object tương ứng với Engine và chèn (inject) vào đây @Autowired private Engine engine; }
Trường hợp này thì IoC container sẽ có VNEngine và nó sẽ tự động inject vào Engine trong class Car phải ko nhỉ? Nếu không có @Component class VNEngine implements Engine { ... } ở đoạn code trên thì nó sẽ tạo mới kiểu gi nhỉ? thanks ad
bài dịch của reactjs.org, đọc cả 2 sẽ dể hiểu hơn, cảm ơn b
Độ chính xác tuỳ theo model á bạn, nhưng theo công bố thì cũng cao á
kéo xuống dưới đọc luôn bản gốc cho nhanh
mng giúp em với ạ em bị lỗi can not find module './api/routes' làm thế nào để khắc phục ạ
ở bài này thì container khi khởi động sẽ chạy dưới user
root(vì trong Dockerfile ta ko nói gì tớiUSER), và khi bạnexecvào container để chạy commandartisanthì nó cũng là root luôn -> file tạo ra dưới quyềnroot-> nhưng do ta đang mount volume sync môi trường ngoài và trong, nên ở môi trường ngoài bạn cũng sẽ thấy file đó dưới quyềnroot.1 trong những cách nhanh đó là bạn cho user ở môi trường ngoài (local) của bạn về dưới group
rootlà đc rồiở bài này thì container khi khởi động sẽ chạy dưới user
root(vì trong Dockerfile ta ko nói gì tớiUSER), và khi bạnexecvào container để chạy commandartisanthì nó cũng là root luôn -> file tạo ra dưới quyềnroot-> nhưng do ta đang mount volume sync môi trường ngoài và trong, nên ở môi trường ngoài bạn cũng sẽ thấy file đó dưới quyềnroot.1 trong những cách nhanh đó là bạn cho user ở môi trường ngoài (local) của bạn về dưới group
rootlà đc rồicám ơn bạn nhé
thật ra trong bài lúc đó mình làm hơi rườm ra, mình tự cài docker-compose. Thay vì đó ta có thể dùng trực tiếp image có docker-compose luôn. Ở dòng đầu tiên trong file
.gitlab-ci.ymlđổi thành:Bạn có thể xem tag cho docker-compose ở đây. Và phần tự cài docker-compose bằng python (pip) ko cần nữa
Type Reason Age From Message Mình làm theo bị dính lỗi này, bạn biết bị sao không nhỉ



theo mình thì do thiếu ram vm, mình cũng bị nhưng set lại ram cho cao hơn thì chạy được
Độ chính xác cao không bạn.
rất dễ hiểu, cảm ơn bạn
👍️
em xin phép share bài ạ
Cảm ơn bạn, mình sẽ cố gắng ra các bài viết chất lượng khác hehe
bạn ơi cho mình hỏi, mình có thể custom cái expired_date ở đâu nhỉ