【问题标题】:Java Rest Best PracticesJava Rest 最佳实践
【发布时间】:2020-03-22 21:24:29
【问题描述】:

我是rest webservice的新手,有一个新手q'。我创建了一个休息类,并想使用帮助类来处理某些操作。例如,我创建了以下服务:

   import statements...
   @Path("/UserResources")
   public class UserResource {
   //Create Spring application context
    static ClassPathXmlApplicationContext ctx = new 
    ClassPathXmlApplicationContext("classpath:/spring.xml");
    private UserResourceHelper urh = new UserResourceHelper(); // this is the helper 
    class UserProfileService userProfileService = ctx.getBean(UserProfileService.class);

    @POST
    @Path("/createUser")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response createUser(@Context HttpServletRequest request, Object object) { 
      StringBuffer sb = new StringBuffer();
      User user = userProfileService.findByPrimaryKey(object); 
      sb.append(urh.createUser(object)); 
      return 
      Response.status(Status.CREATED.getStatusCode()).entity(result.toString()).build(); } }

我对这种方法有几个问题:

这是实例化助手类的正确方法吗?或者我应该创建一个构造函数并在那里实例化类?例如:

    public UserResource (){
     urh = new UserResourceHelper();
    }

在这种方法中,总会有一个新的 UserResourceHelper 实例吗?

如果是这样,这意味着不会有并发问题,对吗? IE。 2 个请求同时进来,createUser 方法接收到的第一个对象会突然被突然进来的第二个对象替换?

我将 Hibernate 用于 ORM。我根据我的代码示例实例化实体的方式是否正确?

感谢您的帮助!

【问题讨论】:

  • 我看到你正在使用 spring,所以你可以将所有东西都委托给 Spring 而不是手动实例化

标签: java rest helper


【解决方案1】:

你可以在spring boot中使用@Autowire注解,它会自动创建类的实例

@Autowire
UserResourceHelper userResourceHelper;

【讨论】:

    【解决方案2】:

    在这种方法中,总会有一个新的 UserResourceHelper 实例吗?

    yes. It always creates new instance

    建议:

    如果你想为每个请求创建一个新的服务,你可以把它作为一个服务而不是一个帮助类,你可以在控制器中自动装配服务。

    @Service
    public class UserResourceService {
    
     }
    

    在控制器中

    public class someController {
    
        @Autowired
        private UserResourceService userResourceService;
    
    }
    
    

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 2011-09-08
      • 2018-04-27
      • 2021-10-15
      • 2018-12-26
      相关资源
      最近更新 更多