Spring簡單獲得實體類的執行個體, 使用ApplicationContext()方法的幾點注意事項

來源:互聯網
上載者:User

標籤:

  今天接觸了Spring的初步用法, 感覺跟執行個體化實體類沒啥區別, 像這種簡單的代碼還不如直接執行個體化來的方便, 這樣使用Spring的話總共需要三個檔案

  第一個當然是一個實體類了, 定義好屬性, getter和setter方法, 別忘了構造一個無參的構造方法. 

public class HelloWorld {    private String mingzi;    private String dizhi;    private User user;    public void sayHello() {        System.out.println("Hello "+mingzi+user);    }    //屬性mingzi的set和get方法    public void setMingzi(String mingzi) {        System.out.println("設定mingzi = "+mingzi);        this.mingzi = mingzi;    }    public String getMingzi() {        return mingzi;    }    //再定義一個屬性    public String getDizhi() {        return dizhi;    }    public void setDizhi(String dizhi) {        System.out.println("設定dizhi = "+dizhi);        this.dizhi = dizhi;    }    //定義屬性user的get和set方法    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }}

  再一個就是一個main方法的入口, 來調用寫好的實體類.

import org.springframework.context.ApplicationContext;//第1行的引用import org.springframework.context.support.ClassPathXmlApplicationContext;//第1行的引用public class Main {    public static void main(String[] args) {        //通過Spring的方式調用方法        //構建容器   構建容器的時候就調用了set方法        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");//第1行        //從容器中擷取javaBean的執行個體   控制反轉IOC        HelloWorld hw1 = (HelloWorld)ac.getBean("hw");        hw1.sayHello();    }}

  剩下的一個也是最重要的一個檔案, xml設定檔

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">    <!-- 將一個類的定義放在這邊 -->    <bean id="hw" class="com.hanqi.HelloWorld">    <!-- 這裡實現的依賴注入(DI) -->        <property name="dizhi" value="山東淄博"></property>        <property name="mingzi" value="小強"></property>        <property name="user" ref="user1"></property>    </bean>    <bean id="user1" class="com.hanqi.User">    <!-- 構造器注入, 如果資料類型是唯一的, 順序可以無所謂 -->    <!-- 可以添加type或者index="序號"來匹配順序號 -->        <constructor-arg value="12" index="2"></constructor-arg>        <constructor-arg value="漢族" index="3"></constructor-arg>        <constructor-arg value="小明" index="0"></constructor-arg>        <constructor-arg value="男" index="1"></constructor-arg>    </bean></beans>

  定義一個User類

public class User {    private String age;    private String sex;    private String minz;    private String name;        public User() {}        public User(String name, String sex, String age, String minz) {        super();        this.name = name;        this.age = age;        this.sex = sex;        this.minz = minz;    }        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }    public String getMinz() {        return minz;    }        public void setMinz(String minz) {        this.minz = minz;    }        public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    @Override    public String toString() {        return "User [name=" + name + ", age=" + age + ", sex=" + sex + ", minz=" + minz + "]";    }}    

 

這裡主要說明以下幾點: 

    一, <property>屬性標籤的設定, name=""的值, 必須為set方法後面的方法名, 一個字母也不能錯, 但是不包括大小寫, 也就是說, 方法名可以有大寫字母, 到了name=""屬性裡面, 就無所謂了, 只要你字母寫對了就OK

    二, 當使用構造器進行屬性注入的時候

      <constructor-arg value="12" index="2"></constructor-arg>      <constructor-arg value="漢族" index="3"></constructor-arg>      <constructor-arg value="小明" index="0"></constructor-arg>      <constructor-arg value="男" index="1"></constructor-arg>

  當然可以像上面一樣定義一個index="", 但是注意, 序號是從0開始的, 第一個屬性的序號是0

  如果沒有index, 構造器自己也能識別每個屬性的賦值, 但是這裡要保持與構造方法的順序一致, 即帶著參數的那個構造方法

    public User(String name, String sex, String age, String minz) {        super();        this.name = name;        this.age = age;        this.sex = sex;        this.minz = minz;    }

這裡這個構造方法的參數的順序是name, sex, age, minz(為了方便測試, 我都設定成了String類型的), 所以構造器的順序也應當這樣寫

<constructor-arg value="小明"></constructor-arg>  →  String name<constructor-arg value="男"></constructor-arg>  →  String sex<constructor-arg value="12"></constructor-arg>  →  String age<constructor-arg value="漢族"></constructor-arg>  →  String minz

 

Spring簡單獲得實體類的執行個體, 使用ApplicationContext()方法的幾點注意事項

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.