MVC框架-mentawai(12)

来源:互联网 发布:好用的网络云盘 编辑:程序博客网 时间:2024/06/08 08:32

控制反转

Mentawai 拥有一个与框架全面整合在一起并且功能强大的控制反转容器。因此,如果想使用控制反转和依赖注入,你不用使用任何其他的框架。 Mentawai 支持setter,构造器,小巧的auto-wiring等方式注入。下面我们来看如何容易做到这一点:

在应用管理器中创建

@Overridepublic void loadFilters() {    filter(new MentaContainerFilter());}

NOTE: Mentawai的控制反转、依赖注入和Auto-wiring能力被提取到一个叫MentaContainer的单独工程里, 它依然可以无缝整合到框架中。

创建控制反转(IOC)

@Overridepublic void setupIoC() {    ioc(UserDAO.class, JdbcUserDAO.class); // 对我的UserDAO接口, 我想使用JdbcUserDAO的实现}

进行依赖注入

既然你表明你在web应用中的JdbcUserDAO实现, 那么依赖注入就会无缝且自动进行,你无需关心任何事,例如:

public class UserAction extends BaseAction {    private final UserDAO userDAO;    public UserAction(UserDAO userDAO) {   // <==== 构造器注入        this.userDAO = userDAO;    }    // (...)}

如果你更喜欢setter方式注入:

public class UserAction extends BaseAction {    private UserDAO userDAO;    public UserAction() {     }    public void setUserDAO(UserDAO userDAO) {  // <===== Setter方式注入        this.userDAO = userDAO;    }    // (...)}

自动装配(Auto-wiring)

依赖装配同样也是无缝且自动的,同样,你不用关心任何事情,下面是个例子:

@Overridepublic void setupIoC() {    ioc(BeanSession.class, MySQLBeanSession.class);    ioc(UserDAO.class, JdbcUserDAO.class);}

看下面 JdbcUserDAO 依赖BeanSession的例子:

public class JdbcUserDAO implements UserDAO {    private final BeanSession session;    private final Connection conn;    public JdbcUserDAO(BeanSession session) {        this.session = session;        this.conn = session.getConnection();    }    // (...)}

Mentawai 将会自动检测到依赖,并且将对象组装到一起,换句话说,它将会通过BeanSession的实现(你声明MySQLBeanSession)注入到JdbcUserDao的构造器,不用做任何其他事情。

TIP: 控制反转使单元测试和功能测试更容易

原创粉丝点击