我的SessionListener组件如下所示:
@Component
public class SessionListener implements HttpSessionListener{
@Autowired
private PeerConnectionRepository peerConnectionRepository;
...
}
因为我使用@Autowired我必须加载SessionListener作为组件。我试着这样做:
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Autowired
SessionListener sessionListener;
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(sessionListener);
}
...
}
但是我无法启动组件错误。如何将此SessionListener作为组件添加到servletContext?请求帮助,干杯。
答案 0 :(得分:0)
我认为你正在创建同一个bean的两个实例,因为你可能有某个组件扫描(我有同样的问题并意识到@IBAction func datePick(sender: UITextField)
{
let datePickerView = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.Date
sender.inputView = datePickerView
datePickerView.addTarget(self, action: #selector(SendSMS.showDatePicker), forControlEvents: UIControlEvents.ValueChanged)
}
func showDatePicker(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = "HH:mm:SS"
timeField.text = timeFormatter.stringFromDate(sender.date)
dateField.text = dateFormatter.stringFromDate(sender.date)
}
也包含组件扫描)在我的情况下,问题只是通过声明来解决它作为普通类,然后创建它的bean。我希望这也适合你。
答案 1 :(得分:0)
我不确定您是否可以将字段自动装入WebApplicationInitializer。 Initializer只是一个配置DispatcherServlet和创建Application Context的对象。它不是豆。 您可以尝试:https://www.mkyong.com/spring/spring-how-to-do-dependency-injection-in-your-session-listener/并通过WebApplicationContextUtils获取bean。但对我来说,这似乎不是最好的做法。