pom.xml
spring-context を依存ライブラリとして加えます。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>example</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>example</name>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
</dependencies>
</project>
ドメインクラス
次のようにドメインクラスを定義しました。
UserService は UserDao に依存し、内部で利用しています。
package com.example;
public class User {
private int id;
private String name;
public User(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
package com.example;
public class UserDao {
public UserDao() {}
public User selectOne() {
return new User(1, "John");
}
}
package com.example;
public class UserService {
private UserDao userDao;
public UserService(UserDao userDao) {
this.userDao = userDao;
}
public User findOne() {
return userDao.selectOne();
}
}
設定
Java-based の設定は次のように行います。
- クラスに
@Configuration
アノテーションをつける。 - Bean を生成するメソッドに
@Bean
メソッドをつける。
@Bean
をつけたメソッドはを構築するために必要な他の Bean を引数経由で利用できます。
package com.example;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public UserDao userDao() {
return new UserDao();
}
@Bean
public UserService userService(UserDao userDao) {
return new UserService(userDao);
}
}
実行
package com.example;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Example {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
UserService userService = context.getBean(UserService.class);
System.out.println(userService.findOne());
}
}
実行結果
User{id=1, name='John'}