搜尋

首頁  >  問答  >  主體

Spring如何在Java应用程序中自动实现依赖注入

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

巴扎黑巴扎黑2777 天前593

全部回覆(6)我來回復

  • 迷茫

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

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:53:09

    你需要Autowired

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:53:09

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

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

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 09:53:09

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

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-18 09:53:09

    依賴注入無非兩步:

    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?

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:53:09

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

    回覆
    0
  • 取消回覆