关于jfinal注入问题

    public ConstructionData(DataSource dataSource) {
        super();
        this.dataSource = dataSource;
    }
    
    @Inject
    ConstructionData cd;

一个有参的构造方法,我注入ConstructionData,需要指定DataSource。这种注入该如何写?

类似spring中的

<bean id="user1" class="com.boss.domain.User1">
    <constructor-arg name="username" value="李四" />
</bean>

这种注入如何解决?谢谢。

评论区

doubuxingle

2020-03-30 17:49

https://jfinal.com/doc/4-6

心在流浪

2020-03-31 11:15

谢谢,当时我只想着用注解的方式解决。忽略了Aop注入。

JFinal

2020-04-01 16:44

@心在流浪 使用 @Inject 注入的前提条件是,被注入的起点的创建或初始化是被 jfinal 接管的,下面三类组件据有这样的特征:
1:controller
2:interceptor
3:validator

所以,在上面三类组件中使用 @Inject 时,能被正确注入

此外,在上面三类组件中被 @Inject 注入的目标对象所形成的链条也能被正确注入,例如:
public class MyController extends Controller {
@Inject
Aaa aaa;
...
}

public class Aaa {
@Inject
Bbb
...
}

上面的例子中,在 MyController 中注入了 Aaa,而 Aaa 中已被注入了 Bbb,这种以 controller 为注入起点的注入链条是可以被注入的,并且可以被注入无限层

类似的在 Interceptor、Validator 中也可以像上面这样在链条中被注入

如果不满足上述条件,需要使用 Aop.get(...) 或者 Aop.inject(...) 进行处理,仍然十分便利

心在流浪

2020-04-02 13:44

@JFinal 谢谢,辛苦了。

热门反馈

扫码入社