# IOC創建對象的方式(實例化方法一) ###### tags: `Spring-IOC` ## IOC創建對象的方法 1.使用無參構造器,默認 2.假設我們要使用有參構造器創建 #### (一)下標賦值 ```xml= <!-- 第一種:下標賦值 --> <bean id="user" class="com.kuang.pojo.User"> <!--index="0",表示此構造器的第一個參數,也就是name--> <constructor-arg index="0" value="覺大人"/> </bean> ```  #### (二)透過類型創建 ```xml= <!--第二種方式:透過類型創建--> <!--不建議使用:因為可能會有不同構造器但有相同參數類型--> <bean id="user" class="com.kuang.pojo.User"> <constructor-arg type="java.lang.String" value="戀戀"/> </bean> ```  #### (三)直接透過參數名來設置 ```xml= <!--第三種:直接透過參數名來設置 --> <bean id="user" class="com.kuang.pojo.User"> <!--name="構造器的參數名" value="賦值"--> <constructor-arg name="name" value="靈夢"/> </bean> ```  ***************** ### 實例演練 1.先創建一個只有無參構造器的類 ```java= public class User { private String name; public User() { System.out.println("User的無參構造器"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show(){ System.out.println("name = " + name); } } ``` 2.配置帶有spring環境的xml文件 ```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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="user" class="com.kuang.pojo.User"> <property name="name" value="秦心"/> </bean> </beans> ``` 配置成功後,可以看到配置在xml文件中的類名、構造器、方法,都會在對應類中有提示  3.測試方法 ```java= public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); User user =(User) context.getBean("user"); user.show(); } } ``` 4.結果 使用debug斷點查看,可以看到導入beans.xml的配置  並且也將xml中的value值設置  5.將無參構造器的類,改成有參 ```java= public class User { private String name; public User(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show(){ System.out.println("name = " + name); } } ``` 無法執行報錯  查看beans.xml,顯示錯誤,因為目前class中沒有無參構造器,因此無法創建對象,必須在xml使用**有參構造器**的寫法(參考本頁最上方)  6.再創建一個新的class,並配置在xml文件 ```java= public class UserT { private String name; public UserT() { System.out.println("UserT被創建"); } public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` ```xml= <bean id="user" class="com.kuang.pojo.User"> <!--name="構造器的參數名" value="賦值"--> <constructor-arg name="name" value="靈夢"/> </bean> <bean id="userT" class="com.kuang.pojo.UserT"> </bean> ``` 7.再執行測試 ```java= public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); User user =(User) context.getBean("user"); user.show(); } } ``` 8.可以發現,就算沒有使用userT,但**無參構造器還是被創建** 表示只要使用beans.xml,**就已經實例化**,因此要使用就直接getBean就好,不須再實例化  ### 總結:在配置文件加載的時候,容器中管理的對象就已經初始化
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up