@@ -41,7 +41,9 @@ class Test {
4141
4242@Inject 修饰器可以将` 被@Resource修饰过 ` 的 class 的` 实例 ` 注入到指定变量中
4343
44- 例如,我们在` ${URSA_ROOT}/model ` 中创建一个` user.model.ts ` ,并使用@Resource 将该类实例化后加入到资源容器中
44+ 例如,我们在` ${URSA_ROOT}/model ` 中创建一个` user.model.ts ` ,并使用@Resource 将该类实例化后加入到资源容器中.
45+
46+ ** 注意** ` inject ` 传入容器名称为被修饰` class的文件名 ` ,而` 非class类名 ` 。比如` Resouce ` 修饰了` service.user.ts ` ,使用` @Inject('user') ` 注入。
4547
4648``` javascript
4749import { Resource } from ' @umajs/core'
@@ -118,6 +120,52 @@ export default class Demp extends BaseService {
118120
119121> @Service 和@Resource 最大的不同是,在@Service 修饰的方法中可以访问到` ctx ` 上下文对象,而@Resource 没有
120122
121- ### 在非 Controller 中使用 Service 时,必须传入 ctx 进行实例化才能使用。
123+
124+ ### 非 Controller 中使用 @Service 时,必须传入 ctx 进行实例化才能使用或者service类不继承BaseService,使用@Resource 容器修饰此class。
122125
123126[ Service 参考文档] ( ./Service.md )
127+
128+ ** 在` service ` 文件夹目录下使用` @Resource ` 需要启用非严格目录,初始化Uma实例时设置` strictDir:true ` 。**
129+
130+ ``` ts
131+ const options: TUmaOption = {
132+ Router ,
133+ bodyParser: { multipart: true },
134+ strictDir:true , // 启用非严格模式
135+ ROOT: __dirname ,
136+ env: process .argv .indexOf (' production' ) > - 1 ? ' production' : ' development' ,
137+ };
138+ const uma = Uma .instance (options );
139+ uma .start (8058 );
140+ ```
141+
142+ ``` ts
143+ // service
144+ import { Inject ,Resource } from ' @umajs/core' ;
145+ import User from ' ../model/User' ;
146+ @Resource ()
147+ export default class {
148+
149+ @Inject (User ) // or @Inject('User')
150+ user: User ;
151+
152+ getDefaultUserAge() {
153+ return this .user .getAge ();
154+ }
155+ }
156+ ```
157+
158+ ``` ts
159+ // controller
160+ import { BaseController , Path , Result ,Inject } from ' @umajs/core' ;
161+ import UserService from ' ../service/user.service' ;
162+
163+ export default class Index extends BaseController {
164+ @Path (' /user' )
165+ test() {
166+ console .log (this .userService .getDefaultUserAge ());
167+ return Result .send (' get defaultUserAge' );
168+ }
169+ }
170+
171+ ```
0 commit comments