天天看点

双射(bijection)

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1724257

双射(bijection)

双射(bijection,即 bidirectional injection 的简称)。当注出(outject)属性数据时,视图可以通过名称找到它。在 postback 或者组件初始化时,数据被注入(inject)到一个组件中。后者是著名的控制反转(inversion of control,IOC)模式的一种实现,可用于连接委托对象。

传统 IOC 与 双射之间的主要不同点在于,双射使长期作用域中的组件可以引用短期作用域中的组件。可以进行这种连接是因为双射在调用组件时(而不是启动容器时)解析依赖项。双射是有状态组件开发的基础。

@Name("addressManager")

public class AddressManagerBean{

    @DataModel

    private List<Address> addresses;

    @DataModelSelection

    @Out(required=false)

    private Address selectedAddress;

    @Factory(value="addresses")

    public void loadAddress(){

        //logic to load addresses into this.addresses

    }

    public String showDetail(){

        //no work needs to be done to prepare the selected address

        return "/address.jspx";

    public String list(){

        return "/addresses.jspx";

}

--------------------------------

public class AddresManagerBean{

    @In("#{addressService}")

    private AddressService addressService;

继续阅读