Spring如何在Java应用程序中自动实现依赖注入
巴扎黑
巴扎黑 2017-04-18 09:51:09
0
6
605

最近开发一个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

巴扎黑
巴扎黑

全部回覆(6)
迷茫

照著你的例子再往下寫兩行。

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 管理產生的。

Peter_Zhu

你需要Autowired

洪涛

使用Spring的依賴注入你首先要從Spring中獲取bean,這樣才能保證bean的依賴已經註入了。你自己new一個物件出來,Spring怎麼可能幫你注入呢?

你可以自己把getBeans方法封裝一下

小葫芦

你要把你的HELLO當成成員變量,然後再去@autowired 或@Resourse

左手右手慢动作

依賴注入無非兩步:

  1. 聲明bean

  2. 注入bean

聲明bean的方式:

  1. xml裡配

  2. class上面加上@Component,@Service之類

  3. 在有@Configuration的類別裡寫帶@Bean的方法

注入bean的方式:

  1. xml裡配

  2. @Autowire之類的註解

可能沒說全,但是常用的應該就這些,詳情參見spring的文檔,ioc的部分

跑題

  1. Web應用程式裡也不需要在web.xml裡配listener(前提是servlet3.0+,例如tomcat7+)

  2. Java Application的話,為什麼不試試Spring boot?

Ty80

推薦題主可以看下@叉叉哥 Servlet 3 + Spring MVC零配置:去除所有xml

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板