spring学習ノート1


一、
ico、di概念?メリット?実現する?原理ですか
Springのメリット?
  結合を解く
常用コンポーネント:事務管理(事物の伝播行為)
標準提供の一例モード
aop
メインフレームサポート
ヘビー級、ライト級の違い:サービスを開くとどれぐらいかかりますか?スプリングはデフォルトでは使わないサービスです.EJBはすべてのサービスを開けます.ヘビー級は負担がかかります.
二spring環境構築
Spring基礎環境はspring.jarとcommon-loging.jarの二つのファイルが必要です.
Spring容器を実装する方法(Application Contect)
ClassPathXmlApplicationContext(String[])
	FileSystemXmlApplicationContext(String[])
beanのxmlの定義
<bean id=“”name=“”class=“”/>
IDは特殊文字が入力できません.スプリング容器の中で唯一必要です.
nameはbeanを定義することもできます.特殊文字を入力することもできます.
getBean法によりbeanの例を取得する.
内部実装
四三種類の実用化beanの方式:
1.デフォルトの構造方法
2.静的工場factory methodはstaticです.
3.インスタンス工場PropertyDescriptor[] ps = Introspector.getBeanInfo(bean.getClass()).getPropertyDescriptors(); for(PropertyDescriptor properdesc : ps){ Method setter = properdesc.getWriteMethod();//获取属性的setter方法 ,private if(setter!=null){ Object value = sigletons.get(propertyDefinition.getRef()); setter.setAccessible(true); //如果 set 是私有方法,则需要设为 true setter.invoke(bean, value);//把引用对象注入到属性 } }8
内部ベーン定義
<property name="">
		<bean class=""/>
	</property>
他のbeanには使えません.
基本タイプのプロパティ注入
<property name=“value=”/>intはstring注入と同じです.
9セット注入
セット:
<property name="">
		<set>
			<value>v</value>
		</set>
	</property>
注入対象は、<ref bean=“beanId”/>を使用する.
リスト:
<property name="">
		<list>
			<value>v</value>
		</list>
	</property>
properties:
<property name="">
		<props>
			<prop key="">v</prop>
		</props>
	</property>
map:
<property name="">
		<map>
			<entry key="" value=""/>
		</map>
	</property>
10
依存注入の3つの方法:コンストラクタ注入、setter、field注入(annotation)
コンストラクタ注入コード
<constructor-arg index="0" type="" ref=""></constructor-arg>
十一アンノテーション注入
設定
この構成は、複数のプロセッサを暗黙的に登録しています.
AutowiredAnnotationBeanPostProcessor,  @Autowired
Common Annoation BeanPostProcessor@Resource
Persistence AnnotationBenPostProcessor,恒久化
RequiredAnnotationBeanPostProcessor
@Autowiredデフォルトでは、タイプ別に組み立てられています.
@Resourceデフォルトでは名称別に組み立てられていますが、名前が見つからない場合は、タイプ別に組み立てられます.
@Resource(name=「」)名前注入
十二@Resource注釈の実現原理
1)annotationを作成する
@Retention(Retention Policy.RUNTIME)稼働期間
@Target使用範囲を宣言する
2)annotationの処理
method.isAnnotationPresent()は注釈があるかどうかを判定します.
method.get Annotation()       注釈情報を取得する
反射注入を利用する
十三
@Autowired(required=true)required=trueは値を注入しなければなりません.
@Qualfier(")は名称で組み立てる
自動組立の4つの形態:
byTypeはタイプ別に組み立てられていますが、同じタイプが複数発見されたら、例外を投げます.
byName名称で組み立てる
コンストラクタはコンストラクタに使われます.
autdetectは自動的にコンストラクタを使うかそれともbyTypeを使って組み立てるかを決めます.もしデフォルトのコンストラクタが見つかったら、byType方式を使います.
自動スキャン
<context:component-scan base-package=“”/>を削除することができます.
エネルギースキャン
@サービス業務層
@Controllerコントロール層
@Repositoryデータアクセスコンポーネント
@Componentコンポーネントを指していますが、分類しにくいコンポーネントです.
現在4の注釈の役割は同じです.
注釈方式beanIdはデフォルトではクラスの簡単な名前です.最初の文字は小文字で、自分で名前を変えることもできます.
デフォルトのスコープは一例です.スコープを変更するなら、@Scopeを使って修正できます.
初期化方法:方法に注釈を表示する@PostConstruct
廃棄方法:方法に注釈を表示する@PreDestory
一つのbeanに同じ注釈を二つ使ってはいけません.
十五プロxy代理
元のクラスインターフェースを実現し、他の操作を追加しました.
Proxy.newProxy Instance(ダイナミックエージェント)を使用してプロキシを実現します.
十六cglib代理
インターフェースなしで代理が可能です.
元のクラスのサブクラスを作成し、すべての非finalを継承する方法です.
Enhancer enhancer = new Enhancer()		
	enhancer.setUpserClass(class);
	enhancer.setCallBack(this)
	enhancer.create();
aop定義:
adviceが欲しい機能は、ログ、パーミッションなどがあります.それらのadvice(通知、強化)が含まれていますか?フロント、バック、異常、最終、折り返し
接続点:使用場所を通知します.Springではブロックされる方法を指します.
切り込みポイント:フィルタ後の接続点
Asppect(面を切る):横に切って点の抽象に関心を持ちます.
対象:通知された対象が、業務ロジックを真に実現する方法
織り込み:一つの過程です.
導入:クラスを変更しない場合、動的にいくつかの方法を追加します.
もしクラスがインターフェースを実現したら、jdkを使ってオブジェクトを作成します.そうでなければ、cglibを使ってproxyを実現します.
annotation aop
1.声明はannotation aopを使用する.
2.断面の定義
1)@Asppectは普通の種類がうどんであると宣言しています.
2)@Pointcutは切り込みポイントを宣言しており、いずれの方法でも定義可能で、一般的にはパラメータなし、コンテンツなし、戻り値なしのプライベート方法として定義されています.この方法の名称は切り口の名前です.
3)事前通知@Before(「method()」
3.最後の声明類は、spring管理十八
前置通知@Before(「pointcutName()」)public void b(){}
後置通知@AfterReturning("pointcuctName")public void a(){}初相例外、実行しませんでした.
最終通知@After("pointcutName")public void after(){}例外通知があるかどうかにかかわらず、実行します.
例外通知@After Throwing(')
サラウンド通知@Around(")public Object a(Proceding JoinPoint pjp)throws Throwable{pjp.proced}.
例外通知の実行時間は不確定ですか?
実行順序:フロント通知-折り返し前-メソッド本体-バック通知-最終通知-折り返し後
ユーザ入力のパラメータを取得します.
@Before(「opintcutName()&args(name)」)
public void a(String name){
)
戻り結果を取得
@AfterReturnint(pointcut=「opintcut Name()」、returning=「reult」)
public void a(String result){
)
例外を捕らえる
19使用xml声明aop
<aop:config>



二十aspect表現