0
点赞
收藏
分享

微信扫一扫

JAX-RS之resteasy跟spring整合


其实,在JAX-RS标准下,jboss的resteasy跟spring结合的话,无非是如何去取得
spring中的bean而已.两个方法,例子如下

1 比如有个接口和实现类

Java代码 ​​ ​​


1. public interface
2.
3. String getMsg();
4.
5. }

public interface CustomerBo{

String getMsg();

}



  实现类


  

1. public class CustomerBoImpl implements
2.
3. public
4.
5. return "RESTEasy + Spring example";
6.
7. }


public class CustomerBoImpl implements CustomerBo {

public String getMsg() {

return "RESTEasy + Spring example";

}



applicationContext.xml


<beans xmlns="http://www.springframework.org/schema/beans"


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


xsi:schemaLocation="http://www.springframework.org/schema/beans


http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">



<bean id="customerBo" class="com.mkyong.customer.impl.CustomerBoImpl">


        </bean>



</beans>




之后用WebApplicationContextUtils + ServletContext


引用



@Path("/customer")
public class PrintService {

CustomerBo customerBo;

@GET
@Path("/print")
public Response printMessage(@Context ServletContext servletContext) {

//get Spring application context
ApplicationContext ctx =
                     WebApplicationContextUtils.getWebApplicationContext(servletContext);
customerBo= ctx.getBean("customerBo",CustomerBo.class);

String result = customerBo.getMsg();

return Response.status(200).entity(result).build();

}



 


第2种方法,自己写类,实现ApplicationContextAware ,当然这个类要单例


 

​​​

JAX-RS之resteasy跟spring整合_instantiation

​​

1. import
2. import
3. import
4.
5. public class SpringApplicationContext implements
6.
7. private static
8.
9. // Private constructor prevents instantiation from other classes
10. private
11.
12. @Override
13. public void
14. throws
15. appContext = applicationContext;
16.
17. }
18.
19. public static
20. return
21. }
22.
23. }

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class SpringApplicationContext implements ApplicationContextAware {

private static ApplicationContext appContext;

// Private constructor prevents instantiation from other classes
private SpringApplicationContext() {}

@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
appContext = applicationContext;

}

public static Object getBean(String beanName) {
return appContext.getBean(beanName);
}

}


  applicationContext.xml


<beans xmlns="http://www.springframework.org/schema/beans"


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


xsi:schemaLocation="http://www.springframework.org/schema/beans


http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">



<bean class="com.mkyong.context.SpringApplicationContext"></bean>



<bean id="customerBo" class="com.mkyong.customer.impl.CustomerBoImpl">


        </bean>



</beans>



使用:




    1. import
    2. import
    3. import
    4. import
    5. import
    6.
    7. @Path("/customer")
    8. public class
    9.
    10. CustomerBo customerBo;
    11.
    12. @GET
    13. @Path("/print")
    14. public
    15.
    16. "customerBo");
    17.
    18. String result = customerBo.getMsg();
    19.
    20. return Response.status(200).entity(result).build();
    21.
    22. }
    23.
    24. }


    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.core.Response;
    import com.mkyong.context.SpringApplicationContext;
    import com.mkyong.customer.CustomerBo;

    @Path("/customer")
    public class PrintService {

    CustomerBo customerBo;

    @GET
    @Path("/print")
    public Response printMessage() {

    customerBo = (CustomerBo) SpringApplicationContext.getBean("customerBo");

    String result = customerBo.getMsg();

    return Response.status(200).entity(result).build();

    }

    }



        web.xml整合


    <web-app id="WebApp_ID" version="2.4"


    xmlns="http://java.sun.com/xml/ns/j2ee"


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee


    ​​ http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> ​​ <display-name>Restful Web Application</display-name>



    <context-param>


    <param-name>resteasy.resources</param-name>


    <param-value>com.mkyong.rest.PrintService</param-value>


    </context-param>



    <listener>


    <listener-class>


    org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap


                    </listener-class>


    </listener>



    <listener>


    <listener-class>


                            org.springframework.web.context.ContextLoaderListener


                    </listener-class>


    </listener>



    <servlet>


    <servlet-name>resteasy-servlet</servlet-name>


    <servlet-class>


    org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher


                    </servlet-class>


    </servlet>



    <servlet-mapping>


    <servlet-name>resteasy-servlet</servlet-name>


    <url-pattern>/*</url-pattern>


    </servlet-mapping>



    </web-app>


    举报

    相关推荐

    0 条评论