blog

こんなに詳しく書かれているのを見たことがない!このSpring Beanの依存性注入メソッドのメモのまとめは、実に的を射ている!

1.Beanの依存性注入の概念 依存性注入(Dependency Injection):SpringフレームワークのコアにあるIOCの具体的な実装です。プログラムを書くとき、オブジェクトの生成は制御の...

Mar 28, 2020 · 5 min. read
シェア

セットメソッド

UserServiceImplにsetUserDaoメソッドを追加しました。

public class UserServiceImpl implements UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } @Override public void save() { userDao.save(); } }
<bean id="userDao" class="com.wange.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.wange.service.impl.UserServiceImpl">
 <property name="userDao" ref="userDao"></property>
</bean>

工法

パラメトリック・コンストラクトの作成

public class UserServiceImpl implements UserService {
 @Override
	public void save() {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); 
		UserDao userDao = (UserDao) applicationContext.getBean("userDao");
		userDao.save();
	}
}
<bean id="userDao" class="com.wange.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.wange.service.impl.UserServiceImpl"> 		 	
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>

共通データ型 参照データ型 コレクション・データ型

package com.wange.dao.impl; import com.wange.dao.UserDao; public class UserDaoImpl implements UserDao{ private String username; private int age; public void setUsername(String username) { this.username = username; } public void setAge(int age) { this.age = age; } public void save() { System.out.println(username+"----"+age); System.out.println("saveメソッドが実行されている"); } }
<bean id="userDao" class="com.wange.dao.impl.UserDaoImpl">
 <property name="username" value="lisi"></property>
 <property name="age" value="20"></property>
</bean>
package com.wange.test;
import com.wange.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
// 
public class UserController {
 public static void main(String[] args) {
 ApplicationContext applicationContext =
 new ClassPathXmlApplicationContext("applicationContext.xml");
 UserDao userDao = (UserDao) applicationContext.getBean("userDao");
 userDao.save();
 }
}
package com.wange.dao.impl; import com.wange.dao.UserDao; import com.wange.domain.User; import java.util.List; public class UserDaoImpl implements UserDao{ private List<String> stringList; public void setStringList(List<String> stringList) { this.stringList = stringList; } public void save() { System.out.println(stringList); System.out.println("saveメソッドが実行されている"); } }
<bean id="userDao" class="com.wange.dao.impl.UserDaoImpl">
	<property name="stringList">
		<list>
			<value>str1</value>
			<value>str2</value>
			<value>str3</value>
		</list>
	</property>
</bean>
package com.wange.dao.impl;
import com.wange.dao.UserDao;
import com.wange.domain.User;
import java.util.List;
public class UserDaoImpl implements UserDao {
	private List<User> userList;
	public void setUserList(List<User> userList) {
	this.userList = userList; 
 }
public void save() {
	System.out.println(userList);
	System.out.println("saveメソッドが実行されている");
	}
}
<bean id="user1" class="com.wange.domain.User"/>
<bean id="user2" class="com.wange.domain.User"/>
<bean id="userDao" class="com.wange.dao.impl.UserDaoImpl">
 <property name="userList">
 <list>
 <bean class="com.wange.domain.User"/>
 <bean class="com.wange.domain.User"/>
 <ref bean="user1"/>
 <ref bean="user2"/> 
 </list>
 </property>
</bean>
package com.wange.dao.impl;
import com.wange.dao.UserDao;
import com.wange.domain.User;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class UserDaoImpl implements UserDao{
 private Map<String, User> userMap;
 public void setUserMap(Map<String, User> userMap) {
 this.userMap = userMap;
 }
 public void save() {
 System.out.println(userMap);
 System.out.println("saveメソッドが実行されている");
 }
}
<bean id="user1" class="com.wange.domain.User"/>
<bean id="user2" class="com.wange.domain.User"/>
<bean id="userDao" class="com.wange.dao.impl.UserDaoImpl">
 <property name="userMap">
 <map> 
 <entry key="u1" value-ref="user1"/>
 <entry key="u2" value-ref="user2"/>
 </map>
 </property>
</bean>
package com.wange.dao.impl;
import com.wange.dao.UserDao;
import java.util.Properties;
public class UserDaoImpl implements UserDao{
 private Properties properties;
 public void setProperties(Properties properties) {
 this.properties = properties;
 }
 public void save() {
 System.out.println(properties);
 System.out.println("saveメソッドが実行されている");
 }
}
<bean id="userDao" class="com.wange.dao.impl.UserDaoImpl">
 <property name="properties">
 <props>
 <prop key="p1">properties1</prop>
 <prop key="p2">properties2</prop>
 <prop key="p3">properties3</prop>
 </props>
 </property> 
</bean>
package com.wange.test;
import com.wange.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
// 
public class UserController {
 public static void main(String[] args) {
 ApplicationContext applicationContext =
 new ClassPathXmlApplicationContext("applicationContext.xml");
 UserDao userDao = (UserDao) applicationContext.getBean("userDao");
 userDao.save();
 }
}

Bean依存性注入の概念

Read next

暗号技術 - メッセージ認証コード

1.暗号入門 2.対称暗号 3.グループ暗号モード 4.非対称暗号 5.一方向ハッシュ関数 6.メッセージ認証コード 7.電子署名 8.証明書 メッセージ認証コードとは アリスとボブの話 $$ アカウントA-5374からアカウントBへ

Mar 28, 2020 · 8 min read