XMLによるBeanの記述

# <span style="color: #4ed357">定義ファイルによるBeanの利用</span>

1. [Beanクラスの生成・取得](#Beanクラスを作成する)
2. [プロパティの利用](#プロパティを利用する)

## Beanクラスを作成する
Bean定義ファイルで呼び出すクラスとメソッドを記述します。
ここでは、簡単なサンプルとして「クライアントにテキストを出力するBean」を作成します。

```java:HelloBean.java

public class HelloBean {
    public void hello(){
        System.out.println("Hello Spring Framework!");
        System.out.println("これは、Beanを呼び出し出力したテキストです。");
    }
}
```


### Bean定義ファイルの作成
次に、HelloBeanクラスのインスタンスをhellobeanという名前でBeanに登録します。
「bean」タグを使ってBeanの名前とクラス名を登録し、生成・取得できます。

#### タグの説明
   
```xml
<beans …略… >
    <bean id=名前 class=クラス名 />
</beans>
```

```xml:bean-conf.xml
package com.tuyano.sample;

<?xml version="1.0" encoding="UTF-8"?>
    <bean
            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="hellobean" class="com.tuyano.sample.HelloBean"/>
</beans>
```

### AppクラスからのBeanの利用
最後に、AppクラスからBeanを利用していきます。
定義ファイルから「AplicationContext」オブジェクトを取り出して、取得したオブジェクトからクラスを呼び出してください。
呼び出したクラスをキャストすることで、オブジェクトとして利用できるようになります。

```java:App.java
package com.tuyano.sample;

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

public class App {
    public static void main(String[] args) {
        AplicationContext app = new ClassPathXmlAplicationContext("bean-conf.xml");
        HelloBean bean1 = (HelloBean)app.getBean("hellobean");
        System.out.println("HelloBean#hello:: "):
    
        bean1.hello();
    }
}
```
## プロパティを利用する
XMLによるBean定義ファイルではフィールドについても記述することができます。
フィールドは定義ファイルにプロパティとして記述することができます。

```java:HelooBean.java
package com.tuyano.sample;

public class HelloBean {
    private String title;
    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void hello(){
        System.out.println(this.getTitle());
        System.out.println(this.getMessage));
    }
}
```

### Bean定義ファイル
title,message フィールドを「プロパティ」タグを使って記述していきます。
valueに設定した値で変数を初期化することができます。

```xml
<property name="プロパティ名" value="値" />
```

```xml:bean-conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans …略… >
    <bean id="hellobean" class="com.tuyano.sample.HelloBean">
        <property name="title" value="TITLE" />
        <property name="message" value="this is message. " />
    </bean>
</beans> 
```

### Appクラスによる呼び出し

```java:App.java
package com.tuyano.sample;

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

public class App {
    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("bean-conf.xml");
        HelloBean bean1 = (HelloBean)app.getBean("hellobean");
        bean1.setTitle("Spring Sample");
        bean1.setMessage("これはSpringのサンプルBeanです。");
        bean1.hello();
    }
}
```

結果

```console
Spring Sample
これはSpringのサンプルBeanです。
```

<br>
<div style="text-align: center;">
[SpringFrameworkの学習記録に戻る](https://qiita.com/kent2980/private/171b6fcaa008dd6827d8)
</div>