eclipseでSpring 2を構築する.5フレーム


依存注入:実行時に外部コンテナからコンポーネントに動的に依存オブジェクトを注入する
制御反転:アプリケーション自体は依存オブジェクトの作成とメンテナンスを担当せず、依存オブジェクトの作成とメンテナンスは外部ウィンドウが負
責める.このように制御権はアプリケーションから外部容器に移行し,制御権の移行はいわゆる反転である.
 
Springの主な特性.
(1)コンポーネント間の結合度を低減し,ソフトウェア各層間のデカップリングを実現する.
(2)トランザクション管理サービス、メッセージサービス、JMSサービス、永続化サービスなど、コンテナを使用して提供できる多くのサービス
務など.
(3)コンテナは単一のモデルサポートを提供し,開発者は実装コードを自分で作成する必要がなくなった.
(4)容器はAOP技術を提供し,それを利用して権限遮断,運転期間監視などの機能を容易に実現する.
(5)JdbcTemplate,
HibernateTemplate.
(6)主流の応用フレームワークに対して統合サポートを提供した.
 
まず、公式サイトでspring 2をダウンロードします.5.zipパッケージ、
ファイルを解凍しlibディレクトリを見つけ、
commons-attributes-api.jar
commons-attributes-compiler.jar
commons-logging.jar
log4j-1.2.15.jar
spring-beans.jar
spring-context.jar
spring-core.jar
 
以上はspringのコアパッケージが入っているだけで、aopサポートが必要な場合は別途加入する必要がある.
eclipseで新しいプロジェクトを作成し、
そして、上記のjarパケットをlibディレクトリにコピーする.
 
パッケージの作成:
pack.java.iuserdao.
IuserDaoインタフェース
package pack.java.iuserdao;

public interface IuserDao {
 public String userdao(String name);
}


 
 
パッケージを作成します.java.userdaoimpl.
package pack.java.userdaoimpl;
import java.io.Serializable;
import pack.java.iuserdao.IuserDao;

public class UserDaoImpl implements IuserDao, Serializable {
	
	private static final long serialVersionUID = 4746185155498963758L;

	public String userdao(String name) {
		// TODO Auto-generated method stub
		return "My Name Is "+name;
	}
}

 
 
簡単な単例モードを確立する.
package pack.java.spring;
import pack.java.userdaoimpl.UserDaoImpl;
/**
 *     ;
 * @author Administrator
 *
 */
public class UserDapSingleFactory {
	private static UserDaoImpl userDaoImpl;
	
	private UserDapSingleFactory(){}
	
	public static  UserDaoImpl	getUserDaoSingleFactory(){
		if(userDaoImpl==null){
			return new UserDaoImpl();
		}
		return userDaoImpl;
	}
}

 
Spring applicationContext.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-2.5.xsd">
 
 <!-- UserDao    -->
 <bean id="userdaoimpl" class="pack.java.userdaoimpl.UserDaoImpl"/>
 
 <!-- SingleFactory    -->
 <bean id="sigleFactory" class="pack.java.spring.UserDapSingleFactory" factory-method="getUserDaoSingleFactory"/>
 
 <!-- SprigDao    -->
 <bean id="springDemo" class="pack.java.userdaoimpl.SpringDemo">
  <property name="userdaoimpl" ref="userdaoimpl"></property>
  <property name="addressList">
   <list>
    <value type="java.lang.String">      </value>
    <value type="java.lang.String">      </value>
    <value type="java.lang.String">      </value>
   </list>
  </property>
  
  <property name="likeSet">
   <set>
    <value>   </value>
    <value>   </value>
    <value>   </value>
   </set>
  </property>
  
  <property name="nameMap">
   <map>
    <entry key="key1" value="  "></entry>
    <entry key="key2" value="  "></entry>
    <entry key="key3" value="  "></entry>
   </map>
  </property>
 </bean>
</beans> 


 
 
 
最後に、テストクラスに書き込みます.
package pack.java.userdaoimpl;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

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

import pack.java.iuserdao.IuserDao;
import pack.java.spring.UserDapSingleFactory;

public class SpringDemo {
 //      ,      ;
 private IuserDao userdaoimpl;
 private UserDapSingleFactory sigleFactoryImpl;
 private List<String> addressList;
 private Map<String,String> nameMap;
 private Set<String> likeSet;

 public void setNameMap(Map<String, String> nameMap) {
  this.nameMap = nameMap;
 }

 public void setLikeSet(Set<String> likeSet) {
  this.likeSet = likeSet;
 }

 public void setAddressList(List<String> addressList) {
  this.addressList = addressList;
 }

 public void setSigleFactoryImpl(UserDapSingleFactory sigleFactoryImpl) {
  this.sigleFactoryImpl = sigleFactoryImpl;
 }

 public void setUserdaoimpl(IuserDao userdaoimpl) {
  this.userdaoimpl = userdaoimpl;
 }

 @SuppressWarnings("static-access")
 private void displayInfo(){
  ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
  SpringDemo springDemo=(SpringDemo) applicationContext.getBean("springDemo");
  String str=springDemo.userdaoimpl.userdao("Admin");
  System.out.println(str);
  
  UserDaoImpl iuserDao=springDemo.sigleFactoryImpl.getUserDaoSingleFactory();
  System.out.println(iuserDao.userdao("   "));
  
  System.out.println("
list :"); for(String strList:springDemo.addressList){ System.out.println(strList); } System.out.println("
set :"); for(String like:springDemo.likeSet){ System.out.println(like); } System.out.println("
map :"); for(Iterator<String> iterator=springDemo.nameMap.keySet().iterator();iterator.hasNext();){ String key=iterator.next(); System.out.println(key+","+springDemo.nameMap.get(key)); } } public static void main(String[] args) { // TODO Auto-generated method stub new SpringDemo().displayInfo(); } }

 
 
 
 
テスト結果、
---------------------------------------------------------------------------
My Name Is AdminMy Name Is周海濤
 
List集合出力は以下の通り:広東省深セン市湖南省株洲市陝西省西安市
 
set集合出力は以下の通りである:バスケットボール卓球をしてサッカーをする
 
map集合出力は以下の通りである:key 1,張三key 2,李四key 3,王五