gpt4 book ai didi

java - Spring MVC Controller 的构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:30:51 25 4
gpt4 key购买 nike

我试图将一些初始化方法放在 Controller 的默认构造函数中,但它从未调用过的问题。当我放置 @Autowired 注释时,错误被抛出 - Autowired 注释至少需要一个参数。

除了将一些初始化代码放在每个 Controller 的方法中之外,将一些初始化代码放在一个地方的最佳做法是什么?谢谢

@InitBinder 
public void initBinder(WebDataBinder binder) {
try {
initialize();
Logger l = Logger.getLogger(this.getClass().getName());
l.warning("Init!!!");
} catch (Exception e) {
e.printStackTrace();
}
}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="de.butler.crm.controller" />
<mvc:annotation-driven />
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="l" />
</bean>
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="de.butler.crm.resource.Resources" />
</bean>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="de" />
</bean>
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="50000000"/>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/view/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>

最佳答案

a) Controller 只是普通的 Spring Beans,因此 the Spring Bean lifecycle 的所有方面申请。

即你可以autowire属性或构造函数参数(使用 annotation support ),您可以使用 the InitializingBean interface 初始化 beans或 a @PostConstruct method

如果这些都不起作用,那么您的设置有问题,您必须发布您的网络上下文 xml 和/或堆栈跟踪。

b) 如果您需要按请求设置,请使用 @InitBinder mechanism

关于java - Spring MVC Controller 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8906685/

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