1. 程式人生 > >Spring 構造注入簡單例項

Spring 構造注入簡單例項

如果想要使用spring來實現依賴注入,需要幾個重要的步驟:
  1 定義主要的類和需要分離的屬性。
  2 配置bean.xml。通過配置檔案,確定主要的類和屬性之間的關係,以及實現類。
  3 通過應用上下文,獲取bean,並進行使用。

專案結構如下所示

這裡寫圖片描述
注入物件/注入屬性

//Juggler.java
package com.spring.test.action1;
public class Juggler implements Performer{
    private int beanBags = 3;

    public Juggler(){

    }

    public
Juggler(int beanBags){ this.beanBags = beanBags; } public void perform() { System.out.println("Juggler "+ beanBags +" beanBags"); } }
//Performer.java
package com.spring.test.action1;

public interface Performer {
    void perform() ;
}
//Poem.java
package com.spring.test.action1;

public
interface Poem { void recite(); }
//PoeticJuggler.java
package com.spring.test.action1;

public class PoeticJuggler extends Juggler {
     private Poem poem;

        public PoeticJuggler(Poem poem){
            super();
            this.poem = poem;
        }

        public PoeticJuggler(int beanBags,Poem poem){
            super
(beanBags); this.poem = poem; } public void perform() { super.perform(); System.out.println("While reciting..."); poem.recite(); } }
// Sonnet29.java
package com.spring.test.action1;

public class Sonnet29 implements Poem{
    private static String lines = "嘛咪嘛咪哄";

    public Sonnet29() {

    }

    public void recite() {
        System.out.println(lines);
    }

}
//test.java

package com.spring.test.action1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
      //  Performer performer = (Performer)ctx.getBean("duke");
      //  performer.perform();//Juggler 15 beanBags
        Performer performer1 = (Performer)ctx.getBean("poeticDuke");
        performer1.perform();
    }
}
//bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
     <bean id="duke" class="com.spring.test.action1.Juggler">
         <constructor-arg value="15"/>
     </bean>
     <bean id="sonnet29" class="com.spring.test.action1.Sonnet29"/>
     <bean id="poeticDuke" class="com.spring.test.action1.PoeticJuggler">
         <constructor-arg value="15"/>
         <constructor-arg ref="sonnet29"/>
     </bean>
</beans>
//輸出結果
Juggler 15 beanBags
While reciting...
嘛咪嘛咪哄

相關推薦

Spring 構造注入簡單例項

如果想要使用spring來實現依賴注入,需要幾個重要的步驟:   1 定義主要的類和需要分離的屬性。   2 配置bean.xml。通過配置檔案,確定主要的類和屬性之間的關係,以及實現類。   3

Spring構造注入迴圈依賴(BeanCreationException/BeanCurrentlyInCreationException)及其解決辦法

1.什麼是迴圈依賴 在說什麼是迴圈依賴之前,不妨使用程式碼,先丟擲這個異常,bug重現一下。 工程目錄如下: 注意: 本文中只需要一個配置檔案:spring.xml,兩個bean:User和Role

struts框架整合spring框架的簡單例項

本片文章寫了簡單struts框架與spring框架整合,本文未寫有關struts框架的內容,只寫了spring整合部分的內容,有需要的同學請參考初級學struts(一)搭建基本的struts框架。 注:建議先參考上面的連結搭建struts框架無錯誤後,再看本文整合sprin

[轉]Spring依賴注入例項化(new)的差別

Spring依賴注入和例項化(new)的差別。 Sping為什麼使用依賴注入而不使用例項化物件的方式? 首先說明一下概念 依賴注入(Dependency of Injection)和控制反轉(Inversion of Control 簡稱

spring:一個簡單例項之對DAO的支援

spring 對 DAO 的支援~~ 1、在 MySQL 中建立 db_spring 資料庫,新建 t_student 表 DROP TABLE IF EXISTS `t_student`; C

利用hackbar進行sql注入簡單例項

這個簡單的例項是對一個網址進行sql注入,獲得管理員的賬號和密碼 步驟如下: (1)先猜解當前網頁的欄位數 在hackbar的輸入框中輸入: http://www.xxx/news_deta

Spring 註解版簡單例項之強大的@Component(二)

1 接上一篇文章<Spring 註解版簡單例項(一)>,此處為 @Component與@Resource相結合   在applicationContext.xml 檔案中使用<context:component-scan>的效果,大大的減少了配置檔案

spring-clound的簡單例項

1 第一步 1)建立eureka服務中心 //相當於dubbo使用zookeeper的原理 pom.xml <depen

利用反射實現簡單Spring註解注入例項

一時興起,這兩天看了看Spring的原始碼,就想寫一個簡單的Spring利用註解注入!!Spring的註解注入方式給了我們很方便的好處!大家應該都瞭解Spring的注入原理,在這裡寫下一個非常簡單的使用註解來注入的例項,做個小小的筆記! 要使用註解,那就絕對和反射離不開。摘

Spring構造方法注入

  預設情況下applicationContext.xml檔案中配置的程式可以通過Spring自動例項化物件。 示例: package com.javaketang.test; public class User{ privete String name;//使

spring setter注入 構造器 順序

public class AwareBean implements BeanFactoryAware, BeanNameAware, ApplicationContextAware, InitializingBean { private String beanName; priv

後端-框架-Spring-IoC-contructor-arg-構造注入

後端-框架-Spring-IoC-contructor-arg public class UserServiceImpl implements UserService { // 宣告介面型別的引用,和具體實現類解耦合 private UserDao dao; private St

Spring依賴注入構造引數注入、集合,陣列屬性注入、XML自動注入 ,全註解配置)

依賴注入 構造引數注入        --> 常用的是方案一和方案二         MyBean類  YouBean類 <?xml version="1.0" encodin

Spring AOP簡介及簡單例項

一、SpringAOP 簡介 1.AOP思想: AOP即面向切面程式設計,可以說是OOP的補充和完善。它利用一種稱為"橫切"的技術,剖解開封裝的物件內部,並將那些影響了多個類的公共行為封裝到一個可重用模組,並將其命名為"Aspect",即切面。       &n

Spring Boot整合Thymeleaf簡單例項

1、定義 Thymeleaf是一種用於Web和獨立環境的現代伺服器端的Java模板引擎。 2、簡單例項 (1)目錄結構 (2)MySpringBootApplication.java pa

SQL注入的一個簡單例項

<p>很多Web應用程式都使用資料庫來儲存資訊。SQL命令就是前端Web和後端資料庫之間的介面,使得資料可以傳遞至Web應用程式。很多Web站點都會利用使用者輸入的引數動態地生成SQL查詢要求,攻擊者通過在URL、表單域,或者其他的輸入域中輸入自己的

Spring中@Async用法詳解及簡單例項

Spring中@Async用法 引言: 在Java應用中,絕大多數情況下都是通過同步的方式來實現互動處理的;但是在處理與第三方系統互動的時候,容易造成響應遲緩的情況,之前大部分都是使用多執行緒來完成此類任務,其實,在spring 3.x之後,就已經內建了@Async來完美解決這個問題,本文將完成

Spring boot專案搭建及簡單例項

Spring boot專案搭建 Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-based applications. Spring Bo

spring 4.0 AOP (使用AspectJ的註解方式 的aop實現)簡單例項

AspectJ:Java 社群裡最完整最流行的 AOP 框架. spring aop 配合使用aspectj(AOP框架)實現我們所需的aop功能 在 Spring 中啟用 AspectJ 註解支援

spring boot 整合WebService Cxf簡單例項(rest)

例子如下pom檔案<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h