我有一个Java(Maven)pkg,带有接口(IHelloWorld)和实现(HelloWorld)
我已经确认,无论是否使用Spring IoC,我都可以使用该软件包,但是当我尝试使用自动装配时,应用程序崩溃了
我在做什么错了?
外部软件包:
package com.example.library;
public class HelloWorld implements IHelloWorld
{
private String _name;
public void setName(String name)
{
this._name = name;
}
public String getName()
{
return this._name;
}
public String greet()
{
return "Hello " + this._name + "!";
}
}
在消耗大量的测试项目中,我可以手动创建对象,也可以使用“旧式” bean接线
config.xml:
<bean id="talk" class="com.example.library.HelloWorld">
<property name="name" value="#{systemProperties['usr']}" />
</bean>
上下文帮助器类:
package com.example.demo;
import org.springframework.context.ApplicationContext;
public final class IoCHelper
{
private static ApplicationContext _context;
private IoCHelper() { }
public static void setContext(ApplicationContext context) { _context = context; }
public static ApplicationContext getContext() { return _context; }
}
主要:
IoCHelper.setContext(new ClassPathXmlApplicationContext("myApp.xml"));
测试课程:
package com.example.demo;
import com.example.library.IHelloWorld;
public class SomeClass
{
private IHelloWorld _myObj;
public void initTest()
{
Object obj = IoCHelper.getContext().getBean("talk");
this._myObj = (IHelloWorld)obj;
}
public IHelloWorld getTest() { return this._myObj; }
}
控制器:
@RequestMapping("/test2")
public String TestMe2()
{
SomeClass x = new SomeClass();
x.initTest();
return x.getTest().greet();
}
当我将@Component和@Autowired添加到测试类“ SomeClass”时,我的应用程序失败并出现错误
com.example.demo.SomeClass中的字段_myObj需要一个类型为“ com.example.library.IHelloWorld”的bean。
@Component
public class SomeClass
{
@Autowired
private IHelloWorld _myObj;
我在config xml中都尝试过,但都没有用
<context:annotation-config />
<context:component-scan base-package="com.example.library,com.example.demo" />