我正在从事一个有springmvc2.5.*的项目。我集成了RESTeasy来创建restfulendpoint。我用@controller定义了一个控制器类。我有一个bean,它应该被注入这个控制器,但似乎没有被注入,因此当bean变量用于控制器rest方法时,它抛出一个空指针异常。
我已经将这些添加到了web.xml中
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.test.package.controller.MyApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
自定义类 I 从 resteasy 应用程序类扩展来定义应用程序路径:
@ApplicationPath("/rest")
public class MyApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<>();
// register root resource
classes.add(EmployeeController.class);
return classes;
}
}
我有一个servlet.xml,它定义了mvc控制器bean,工作正常:例如:
<bean name="/testDetail.html" class="com.test.package.controller.TestDetailController" parent="baseController">
<property name="testService" ref="testService"/>
</bean>
我的Controller类如下所示:
@Controller
@Path("/employee")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class EmployeeController {
private static final Log LOG = LogFactory.getLog(EmployeeController.class);
private EmployeeService employeeService; // This doesn't get initiated.
@PUT
@Path("/update/{empId}")
public Response updateEmp(@PathParam("empId") Long empId, EmpRequest request) {
Response response = null;
employeeService.update(request); // NULL POINTER THROWN HERE, employeeService is null
return response;
}
public EmployeeService getEmployeeService () {
return employeeService ;
}
public void serEmployeeService (EmployeeService employeeService ) {
this.employeeService = employeeService ;
}
}
这里我向servlet.xml添加了另一个bean,
<bean id="employeeController " class="com.test.package.controller.EmployeeController">
<property name="employeeService " ref="employeeService "/>
</bean>
在单独的 xml 中定义了员工服务 bean。只是它不会反映在员工控制器豆中。我不确定是否甚至创建了员工控制器豆。但是我能够成功调用终结点。如果将员工服务 Bean 放入 MVC 控制器中,则 Bean 启动工作正常。例如:
<bean name="/testDetail.html" class="com.test.package.controller.TestDetailController" parent="baseController">
<property name="employeeService " ref="employeeService "/>
</bean>
但不是在RestController中。对这种行为有什么想法吗?我这里缺少任何配置吗?
首先,您应该将雇员服务
bean定义如下,
<bean id="employeeService" class="com.test.package.service.EmployeeService">
--------
</bean>
在web.xml中加载上面的config xml文件,
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/XML_FILE_PATH/XML_FILE_NAME.xml</param-value>
</context-param>
然后,您可以使用employeeService
bean
初始化employeeService
bean后,使用@PostConstruct
注释调用此方法
@PUT
@PostConstruct
@Path("/update/{empId}")
public Response updateEmp(@PathParam("empId") Long empId, EmpRequest request) {
Response response = null;
employeeService.update(request); // NULL POINTER THROWN HERE, employeeService is null
return response;
}
问题内容: 我想基于从客户端传递的String参数注入一个bean。 我希望基于传递的参数注入报表实例。任何帮助将不胜感激。提前致谢 问题答案: 使用工厂方法模式: 当您使用以下命令调用控制器时,Spring可以创建报告类型: 但是,它非常笨拙,并且每次添加新报告类型时都需要进行修改。如果报告类型列表已修复,则可以。但是,如果您计划添加越来越多的类型,这将是一个更可靠的实现: 通过此实现,添加新的
GCP入口的以下注释等效于什么?我试图使用一个自定义的nginx模板,但我找不到以下注释的参考。在github的回答中,他们使用的是AWS,但我需要使用GCP来实现这一点。 我正在使用ingress类nginx 我正在尝试使用入口控制器在GCP Kubernetes集群中进行入口TCP SSL终止。 我想要来自<代码>https://example.com:1234重定向到
/////////////////////个人控制器///////////////////////////////// ///////////////////个人/////////////////////////////////// ///////////////////PersondaoImpl/////////////////////////// /////////////人(模型)/////
我有Spring acpect,它会在我的应用程序中的每个控制器方法周围触发。在方面的主体中,我想访问方法签名中声明的所有请求参数。有没有一种简单的方法可以避免反思?
在一个项目中,当我将代码切换到主分支时,我开始发现一些错误。其中之一是加载异常错误。整个日志还显示了一个No Suck method异常错误。 我也想发布控制器,但因为它超过600行,我不确定这是否有帮助,我已经确保控制器中的每个方法都是公共的,唯一的私有部分是我使用的变量和图表。