add dao, and modify DI
add test