最近开发一个Java应用程序,希望能使用Spring来实现依赖注入。
在Web应用程序中,可以在web.xml文件中配置listener来自动实现注入。
在Java Application中,可以通过如下的方式来加载Spring:
ClassPathXmlApplicationContext ctx = new FileSystemXMLApplicationContext("beans.xml");
Hello hello = ctx.getBeans("hello");
但这样的一个问题是,在每次使用一个bean时,都需要显示调用一次getBeans。
不知有什么好的方法,能够让Spring自动加载对象,而不需要显式调用getBeans?
更多 0
迷茫2017-04-18 09:53:09
照著你的例子再往下寫兩行。
public class Main{
public static void main(String[] args){
ClassPathXmlApplicationContext ctx = new FileSystemXMLApplicationContext("beans.xml");
Hello hello = ctx.getBeans("hello");
hello.say();
}
}
class Hello {
@Autowired
private DbUtil db;
public void say(){
System.out.println(db.getWelcomeInfo());
}
}
web專案裡最初處理請求的那一層還是需要透過getBeans()產生的。只不過這個步驟是 tomcat/strtus/springMVC做的。
Spring 會為被他管理的類別實作自動注入,然而你程式啟動的main類別並不是由 Spring 管理產生的。
PHP中文网2017-04-18 09:53:09
使用Spring的依賴注入你首先要從Spring中獲取bean,這樣才能保證bean的依賴已經註入了。你自己new一個物件出來,Spring怎麼可能幫你注入呢?
你可以自己把getBeans方法封裝一下
ringa_lee2017-04-18 09:53:09
依賴注入無非兩步:
聲明bean
注入bean
聲明bean的方式:
xml裡配
class上面加上@Component,@Service之類
在有@Configuration的類別裡寫帶@Bean的方法
注入bean的方式:
xml裡配
@Autowire之類的註解
可能沒說全,但是常用的應該就這些,詳情參見spring的文檔,ioc的部分
跑題
Web應用程式裡也不需要在web.xml裡配listener(前提是servlet3.0+,例如tomcat7+)
Java Application的話,為什麼不試試Spring boot?