我有以下目录布局:
- SRC
- 主要
- java的
- 资源
- sql(数据库脚本)
- 弹簧(配置)
- Web应用程序
在ServletContextListener类中,我想访问SQL目录下的文件并列出它们.基本上我的问题是路径,因为我知道简单地列出目录下的文件是:
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
Run Code Online (Sandbox Code Playgroud)
也许我可以使用ServletContextEvent
Object来尝试构建路径resources/sql
public void contextInitialized(ServletContextEvent event) {
event.getServletContext(); //(getRealPath etc.)
}
Run Code Online (Sandbox Code Playgroud)
是否存在以相对的非硬编码方式设置该路径的东西?像new File("classpath:sql")
(最好是弹簧,如果可能的话)或者我应该用servletContext指向resources/sql
什么?
我正在尝试从 Spring 迁移一个项目,并按照示例 GitHub 存储库开始使用 Dagger 2。
在 Spring 中,我可以在类级别使用注释来公开类的所有方法,包括void
方法。我想在 Dagger 2 中做到这一点,即,我想“提供”一种void
方法。
在下面的代码示例中,也许我应该将printRandomUUID
方法移到Printer
接口中。但是,我正在做这个小练习,目的是迁移经典的 Spring@Component
或@Service
.
正确的做法是什么?是否可以在组件或模块级别提供 void 方法?
public class Main {
interface Printer {
void printMsg(String msg);
}
static class ConsolePrinter implements Printer {
@Override
public void printMsg(String msg) {
System.out.println(msg);
}
}
@Singleton
@Component(modules = ConsoleModule.class)
interface HelloWorldApp {
Printer getPrinter();
//this doesn't compile -> java.lang.IllegalArgumentException: not a valid component method:
void printRandomUUID();
}
@Module
static …
Run Code Online (Sandbox Code Playgroud)