gpt4 book ai didi

java - 设计模式-无DI框架的webapp

转载 作者:行者123 更新时间:2023-12-01 12:49:20 25 4
gpt4 key购买 nike

我需要在没有依赖注入(inject)框架的情况下实现 servlet 3.0 webapp。哪种解决方案是最佳实践? (在性能/内存使用和可扩展性方面)

1)DAO和服务层的静态方法

@WebServlet("/welcome")
public class MyController extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

MyService.doSomething(/*args*/);
}
}

public class MyService {

public static void doSomething(/*args*/) {
MyDAO.crud(/*args*/);
}
}

public class MyDAO {

public static void crud(/*args*/) {
//...
}
}

2)接口(interface)

@WebServlet("/welcome")
public class MyController extends HttpServlet {

private MyService myService;

public MyController() {
super();
if (myService != null) {
myService = new MyServiceImpl();
}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

myService.doSomething(/*args*/);
}
}

public interface MyService {

void doSomething(/*args*/);
}

public class MyServiceImpl implements MyService {

private MyDAO myDAO;

public MyServiceImpl() {
if (myService != null) {
myDAO = new MyDAOImpl();
}
}

@Override
public void doSomething(/*args*/) {
myDAO.crud(/*args*/);
}
}

public interface MyDAO {

void crud(/*args*/);
}

public class MyDAOImpl implements MyDAO {

@Override
public void crud(/*args*/) {
//...
}
}

3)其他的东西......

谢谢。

最佳答案

最好将应用程序中的MyServiceMyDAO设置为无状态。您可以将它们都设置为单例(这是所有spring注入(inject)的bean默认范围) ,然后在您的 Controller 中使用它。由于其无状态,因此不存在并发问题。

关于java - 设计模式-无DI框架的webapp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24363422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com