我需要将旧项目转换为Spring Boot和MVC 在旧版本中使用的技术是JSP,Servlet,Hibernate,JPA,Jersey
我需要帮助才能以最小的努力完成所有这些工作。
web.xml
转换为SpringBoot Configauration
,问题是 - MVC也有dispatcher
。
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
如何通过最少的代码更改来完成此操作?
@Path("/aaccess")
public class RestAAccess {
@GET
@Path("/get/{id}")
@Produces("application/json")
@Consumes("application/x-www-form-urlencoded")
public Object get(@PathParam("id") int id) {
//
}
@POST
@Path("/doit")
@Produces("application/json")
public Object doit(@FormParam("id") int id,
@FormParam("role_id") int rid,
@FormParam("action") String action,
@FormParam("granted") boolean granted,
@FormParam("act") String act) {
//
}
}
现有的Dao-Implementation类(没有接口)。如何改变这个
public class CStaffData {
public static List<CStaffResult> getByCompany(Session se, ResultPack rp, int id) {
// --
List<CStaffResult> table = se.createQuery("Some SQL").setParameter("id", id).setResultTransformer(Transformers.TO_LIST).list();
//---
}
}
答案 0 :(得分:1)
1:将server.contextPath=/webapi
放在application.properties
2:
@RestController
@RequestMapping("/aaccess")
public class RestAAccess {
@RequestMapping(value="/get/{id}",method = RequestMethod.GET)
public Object get(@PathVariable("id") int id) {
//
}
@RequestMapping(value=""/doit"",method = RequestMethod.POST)
public Object doit(@RequestBody SampleBody sb) {
//
}
class SampleBody{
int id,
@JsonProperty(value = "role_id")int rid,
@JsonProperty("action") String action;
@JsonProperty("granted") boolean granted;
@JsonProperty("act") String act;
...........getter setters ......
}
3:更好地使用Respository或Dao正确检查spring文档。
答案 1 :(得分:1)
我找到了解决问题的方法。
我从这里读到的第一个和第二个问题:
http://www.gauravbytes.com/2017/02/spring-boot-restful-webservices-with.html
将此部分添加到pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
&#13;
如果您已经使用了tomcat嵌入,则不需要此部分。一起不会起作用,只是为了获取信息。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
&#13;
关于这一点,你可以在这里阅读(第9点):
http://www.baeldung.com/spring-boot-application-configuration
在使用Jersey注释之后,您只需添加@Component
注释。
此外,您必须添加注册球衣调度员:
@Configuration
@ApplicationPath("webapi")
public class JerseyConfiguration extends ResourceConfig {
public JerseyConfiguration() {
}
@PostConstruct
public void setUp() {
register(RestAAccess.class);
}
}
如果旧项目存在另一个servlet,您也可以使用下面的代码添加:x` (请阅读此处 - http://www.logicbig.com/tutorials/spring-framework/spring-boot/servlet-component-beans/)
Servlet类:
public class MyServlet extends HttpServlet {
@Override
protected void doGet (HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.println("response from servlet ");
}
}
Congiguration功能(添加您的主类):
@Bean
ServletRegistrationBean myServletRegistration () {
ServletRegistrationBean srb = new ServletRegistrationBean();
srb.setServlet(new MyServlet());
srb.setUrlMappings(Arrays.asList("/path2/*"));
return srb;
}
关于SessionFactory解决方案尚未就绪(未经测试)。万一,我会添加未来。