我是Spring Boot的新手,我有一个Spring Boot应用程序似乎忽略了@PreDestroy注释-当我从命令行或通过Eclipse运行时,我从来没有看到@PreDestroy代码在应用程序关闭时运行(例如通过ctrl-c)
代码如下。。。
应用java:
@SpringBootApplication
public class Application {
@Autowired
private MessageProcessor messageProcessor;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@PostConstruct
public void init() {
messageProcessor.run();
}
}
消息处理器配置:
@Configuration
public class MessageProcessorConfiguration {
@Bean
public MessageProcessor messageProcessor() {
return new MessageProcessorImpl();
}
}
消息处理器:
public class MessageProcessorImpl implements MessageProcessor {
@Override
public void run() {
while (isActive()) {
…
}
}
@PreDestroy
public void shutdown() {
System.out.println("MessageProcessorImpl - shutting down");
}
}
尝试在xml中添加此行。
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
当Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE)
在bean上使用时,@PreDestroy不起作用,因为使用此方法生成的bean不完全由IOC容器管理。
当在bean上使用范围(value=ConfigurableBeanFactory.Scope\u SINGLETON)时,@PreDestroy工作。
在创建上下文期间,Spring启动寄存器关闭挂钩请参见org。springframework。上下文支持AbstractApplicationContext#RegisterShotDownhook方法。因此,必须在crtl c组合上关闭上下文(如果您通过java-jar-app.jar运行应用程序),这反过来会触发您的@Predestroy方法。这对我有用。
我在你的代码中没有看到任何注释。我可以建议您使用@Component注释来注释MessageProcessorImpl bean,而不是手动的@bean声明。
我发现了许多类似的问题,但没有一个解决了我的问题。我的问题是可以访问的函数 下面是我的spring-security.xml代码。
我的Checkmarx报告在我的Spring Boot应用程序中将此方法标记为高严重性二阶SQL注入: 根据Checkmarx: ... 应用程序通过在查询中嵌入不受信任的字符串来构造此SQL查询,而无需进行适当的清理。连接的字符串被提交到数据库,并在数据库中进行相应的分析和执行。 setActive('Y')行似乎是问题所在。 我在Spring Data JPA使用中找到的数据清理指南建议使用从
我在玩和 这是我的应用程序上下文文件 以下是我的Java类 HelloWorld1。JAVA 住址JAVA 这里是我尝试运行东西的地方-应用程序。JAVA 我一直在得到这个异常-理想情况下我不应该,因为我已经定义了id为'address1'的@Qualifier注释-所以它不应该抛出异常 警告:上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.fact
问题内容: 我在属性文件中定义了一个属性: 然后,我有了class, 仅 当属性设置为true时, 才 应 创建一个Property Configuration bean 。 __ 这是我的课: 如果我在里面添加,只是为了进行实验并查看的值是多少,那么 确实 创建了bean , 并且我看到的值是。 如果我删除了,留下的条件作为和属性更改来自于豆,从未创建(既不也不对)。 我应该怎么做才能基于该属性
我将Spring 3.2.4与JavaFX结合使用,并希望实现一种方法,其中操作将在事务中执行。我在控制器中的代码如下所示: 以及我的应用程序上下文: 尝试运行时,我收到以下错误消息: 该方法存在。删除注释,或者将方法从public更改为private,或者从配置中删除bean,程序就会运行,但事务注释根本不起作用。删除代理目标会导致另一个错误。
我的spring应用程序有点小问题。下面是我的代码: (存储库) 下面是我的简单服务类: 更新:配置