我有一个jar文件,其中定义了一些Spring bean。我的问题是这个jar文件的1. FROM table-name // Scan all the tuples [rows] in this table
2. WHERE column-name = '123' // Extract those rows that satisfies some selection criteria, and ignore the rest
3. SELECT * // Include ALL the columns in the tuple in the result set [Asterisk is like a wild-card]
对象,如何从中获取所有Spring bean名称?或者是否有 <link rel="stylesheet" type="text/css" href="{{url('assets/css/bootstrap.min.css')}}"/>
作为参数的Spring官方api来获取<script src="{{url('assets/js/components/bootstrap.js')}}"></script>
的实例?如果答案是肯定的,那么我可以使用InputStream
来获取bean名称。
提前致谢。
答案 0 :(得分:0)
我可以添加答案,曾经在同一案例中帮助过我。
您还可以使用JarInputStream [查看链接的文档]
这是一个例子,我希望它可以帮助你。
try {
File file = new File("myJar.jar");
FileInputStream fInput = new FileInputStream(file);
JarInputStream jInput = new JarInputStream(fInput);
//This class is used to represent a JAR file entry.
JarEntry je;
while((je=jInput.getNextJarEntry())!=null){
//gives fully qualified name of classes inside jar
System.out.println(je.getName());
}
jInput.close();
} catch (IOException e) {
e.printStackTrace();
}
如果是 InputStream :
void someMethodName(InputStream jarFile) {
JarInputStream jarInputStream = null;
try {
jarInputStream = new JarInputStream(jarFile);
JarEntry je;
while((je=jarInputStream.getNextJarEntry())!=null){
//gives fully qualified name of classes inside jar
System.out.println(je.getName());
}catch (IOException e) {
e.printStackTrace();
}}
不知道它是否会有所帮助,但我想我已经做了几次,为什么不与你分享。如果有帮助请告诉我。
答案 1 :(得分:0)
你可以知道在特定jar中声明的所有bean,为此你必须将jar / war中定义的spring beans配置文件名传递给ApplicationContext。您可以通过在双引号中传递配置文件名来传递任意数量的配置文件。逗号分隔如下:
ApplicationContext appCon = new ClassPathXmlApplicationContext("parentConfig.xml","springConfig.xml");
考虑到弹簧配置文件“springConfig.xml”是在jar / war&amp;中定义的。 “parentConfig.xml”文件是当前项目中定义的实际弹簧配置文件。
你是对的,你可以使用getBeanDefinitionNames()
获取所有声明的beanList<String> beansList = Arrays.asList(appCon.getBeanDefinitionNames());
beansList.forEach(bean -> System.out.println(bean));
上述语句将打印jar / war文件中定义的所有bean。以及在当前项目spring配置文件(“parentConfig.xml”)中声明的bean。