IDEAはspringのソースコードを読んでデバッグします.


アリ雲サーバのクーポンを受け取ります. クーポン券
ターゲット:Springのソースコードを読み、コードを調整して追跡する環境を構築し、ついでに簡単なDemoを創立して、Springのソースコードを調整することができます.
このセクションでは、Springのソースコードの読み取りとデバッグに関する環境構築を紹介し、MVNを使って非常に簡単なDemoを作成し、Springのカーネルの追跡とデバッグができます.
1、ソースのダウンロード
SpringのソースはGitHubからダウンロードできます.https://github.com/spring-projects/spring-framework
2、Springソースのコンパイル
Springソースをダウンロードした後、私はここで慣れています.直接にIDEに導入するのではなく、コンパイルしてください.大規模なオープンソースプロジェクトは自動化構築ツールによってコンパイルパッケージを実現するので、先にコンパイルしたほうがいいです.コンパイル中に自動的にダウンロードに関する依存があります.現在、ほとんどのプロジェクトのコンパイルの過程で発生した問題は、まずプロジェクト依存の問題にまとめられています.
①コンパイル環境
A、操作システム:ソースと関連開発環境は全部macの下にあります.
B、JDK:JDK 1.8を取り付けます.
C、SpringソースはGradeという自動化構築ツールを使って構築されたので、インストールが必要です. Graadle、インストールの過程は多く言いませんでした.
D、私が使っているIDEは Intelli IDEAですので、インストールが必要です. Intelli IDEAフラッグシップ版は、無料で30日間です.
②、ソースコンパイル
ソースコードのコンパイル環境が整いましたら、ソースコードをコンパイルする前に、Springのソースコードのカタログをよく見てください. README.md、import-into-indea.md この二つの書類. README.mdでは、コンパイル全体と注意すべき点を教えてくれました.IDEの開発ツールとしてEclipseを使用すれば、直接運転します. あるいは.import-into-eclipse.batはソースコードをEclipseに導入することができます.IDEAを開発ツールとして使うなら、真剣に読む必要があります. import-into-indea.mdはIDEA導入の手順を教えてくれます.
A、先に入ってください./spring-frame ewarkディレクトリ、実行します. ./gradlew:spring-oxm:compleTest Java まずSpring-oxmモジュールをプリコンパイルします.
B、やはり…/spring-frame ewarkディレクトリで、実行します./gradlew build-x test コンパイル、Spring全体のソースコードです.後ろの-x test コンパイル中にテストケースを無視したものです.これを加えてSpringのテストケースもあります.コンパイルの時間は、ネットワークの円滑さによって異なります.
③ソース導入IDEA
コンパイルが通ったら、ソースをIDEAに導入できます.
IDEAにFile->New->Project from Existing Sources->Navigate to directoryを選択し、Springソースディレクトリを選択して導入し、IDEAが自動的にGradeを使って構築します.構築が完了したら、次のような設定が必要です.
除外する spring-aspects このプロジェクトはSpringのAOPシステムでaspectsを統合していますが、IDEAではコンパイルできません.
http://youtrack.jetbrains.com/issue/IDEA-64446
選択  spring-aspects 項目の右ボタンから、「Load/Unload Moudeules」を選択して、ポップアップフォームに設定します.
 
3、簡単なデモの構築
ここで簡単なDemoを作成することができます.DemoはSpringのソースコードに依存しています.このようにして、外部からDemoを実行して、Springの内部ソースを追跡します.一般性を失わないために、ここのDemoはMVNを採用して構築していますが、Springのソース依存はIDEAにコストを設定するソースコードが必要です.
①IDEAを使ってSpringのソースコードのProjectディレクトリの下でDemoを作成し、直接MVNの骨格を使うことができます.
②、デモに関する設定と簡単なコードテスト
A、pom.xmlのセットをお願いします. junnitはバージョンに依存しています.4.12に変更しないとSpringのユニットテストはコンパイルが通らないです.
B、IDEAにSpringの項目依存を設定する(Spring-core、Spring-beans、Spring-context、Spring-expressionのこれらのmoduleを設定すればいい):
 
C、pom.xmlには、comons-logingの依存性を導入する必要があります.そうでないと、コンパイルレポートにロギングFactoryのエラーが見つからないです.静的リソースパスを設定します.(そうでないと、xmlを読み込む時、パスが見つからないです.)



	4.0.0

	com.hxl
	spring-debug
	1.0-SNAPSHOT

	spring-debug
	
	http://www.example.com

	
		UTF-8
		1.8
		1.8
	

	
		
			junit
			junit
			4.12
			test
		

		
		
			commons-logging
			commons-logging
			1.2
		
	

	
		
		
			
				src/main/resources
				true
			
		
		
			
				
					maven-clean-plugin
					3.0.0
				
				
				
					maven-resources-plugin
					3.0.2
				
				
					maven-compiler-plugin
					3.7.0
				
				
					maven-surefire-plugin
					2.20.1
				
				
					maven-jar-plugin
					3.0.2
				
				
					maven-install-plugin
					2.5.2
				
				
					maven-deploy-plugin
					2.8.2
				
			
		
	

 
D、Springの設定と簡単なSpringコードの作成
 
簡単な登録インターフェースを作成します.
public interface ILogin {
	String loginCheck(String userName,String password);
}
 
実現クラスがあります.
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class LoginImpl implements ILogin {

	String id = "";

	@Autowired(required = false)
	public void setId(String id) {
		this.id = id;
	}

	@Override
	public String loginCheck(String userName, String password) {
		System.out.println("boy  ...");
		return "success";
	}
}
 
その後、このbeanを構成に登録する(経路spring-debug/src/spring-config.xml):
 


	
最後に呼び出しコードを作成します.
import com.boy.login.ILogin;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

/**
 * Hello world!
 */
public class App {
	public static void main(String[] args) {

//		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring-config.xml");
		String XMLPath = "//Users/sky/Java/spring-framework/spring-debug/src/spring-config.xml";
		ApplicationContext applicationContext = new FileSystemXmlApplicationContext(XMLPath);
		ILogin login = (ILogin) applicationContext.getBean("loginService");
		login.loginCheck("boy", "123");
	}
}
 
その後、Debugを行うことができますし、Springソースの内部にDebugを行うことができます.