我有一个简单的应用程序,使用Spring 3进行依赖注入.我有一个供用户查看的JFrame和一些与后端服务器和本地数据库维护同步的后台任务.
这是我的应用程序上下文的相关部分:
<task:scheduler id="scheduler" pool-size="1"/>
<task:scheduled-tasks scheduler="scheduler">
<task:scheduled ref="synchronizer" method="incrementalSync" fixed-delay="600000"/>
... more tasks ...
</task:scheduled-tasks>
<bean id="mainFrame" class="nl.gdries.myapp.client.ui.MainFrame">
... properties and such ...
</bean>
Run Code Online (Sandbox Code Playgroud)
当我启动此applicationContext时,即使我的UI正在加载,调度程序也会立即开始执行后台任务.因为第一个任务在开始时是一个相当繁重的任务,我希望它在开始执行之前等待UI完全加载和显示.
有谁知道如何告诉Spring推迟执行计划任务,直到我选择的那一刻?
我有一个Swing应用程序,我想从意大利面转换为使用Guice的依赖注入.使用Guice提供配置和任务队列等服务非常好,但我现在开始使用应用程序的GUI,并且不确定如何继续.
该应用程序基本上是一个JFrame带有一堆标签的应用程序JTabbedPane.每个选项卡都是一个单独的JPanel子类,它布置了各种组件,并且需要服务来在按下某些按钮时执行操作.
在当前的应用程序中,这看起来像这样:
@Inject
public MainFrame(SomeService service, Executor ex, Configuration config) {
tabsPane = new JTabbedPane();
// Create the panels for each tab and add them to the tabbedpane
somePanel = new SomeTabPanel(service, ex, config);
tabsPane.addTab("Panel 1", somePanel);
someOtherPanel = new SomeOtherTabPanel(service, ex, config);
tabsPane.addTab("Panel 2", someOtherPanel);
... do more stuff
}
Run Code Online (Sandbox Code Playgroud)
显然,这并不完全遵循DI最佳实践.我不想拥有@Inject标签,因为这会让我得到一个包含许多参数的构造函数.我确实希望使用Guice将所需的依赖项注入到我需要的任何选项卡对象中,而不必将所有这些依赖项传递给选项卡构造函数.
所有依赖于标签的对象是我服务的Module知道,所以基本上所有我想我想要做的就是要求吉斯为所需对象,并让他们构建了我.
我正在尝试获取所有正在运行的应用程序包的列表.用户已启动的GUI应用程序(如Dock正在显示)或活动监视器(它在某些进程旁边显示一个图标).我发现我可以使用sysctl()与KERN_PROC_ALL获取所有正在运行的进程的列表,但不会告诉我,他们是来自哪个应用程序包.像Minecraft这样的应用程序只是显示为java并且不是很有用.
我确实发现活动监视器中的进程组名称大致显示了我想知道的内容: 活动监视器显示Minecraft Launcher运行http://gdries.nl/activmon.png
实现语言并不重要.目前在C和go工作,但如果其他环境证明是必需的,那不是问题.我想要做的就是检测用户运行的应用程序,以便记录每个应用程序的使用时间.(Parental Controls做类似的事情,但将其记录在我无法解析的plist文件中)