Spring ioc注釈入門
スプリングフレームワークは現在盛んに使われています
beanを管理する機能は多くのユーザーの用途が最も広い機能であるに違いない.
注入に依存する用途も非常に広い.
どのバージョンから注釈機能が開発を簡単にしたのか分かりませんが、簡潔です.
この例では,bean管理と依存注入を注釈で実現する.
小米2携帯電話がもうすぐ発売されるので、誰もが望んでいるが、この例はこれをシナリオとしている.
1.携帯電話のインタフェース---言うまでもなく、結合性を減らすために
2.小米実現
3.携帯電話機が開発され、電話帳が必要で、一応単独クラス(携帯電話のコンポーネントではない)と考えられているが、電話帳は、インタフェースを必要とせず、結合度は考慮する必要はない
4.ok、携帯電話が開発され、電話帳も開発され、人間が登場した.
5.人類の実現:
6.しかしspring管理容器はまだできていないので、使うときに再構築するのか、それは遅くない.
7.ええ、プロファイルはまだ追加されていません
8.ok、テストしましょう
実行結果:
---電話開始、電話番号:0001
bing~~~もしもし、小米1、私は米2です.
---電話で終わる
実は大多数の運用の中で、これらの知識は十分で、簡潔で、使いやすくて、もっと詳しい知識については、もっと勉強する必要があります.コメントを歓迎します.
添付:
----------------------------------------------
必要なjar
1.aspectjrt.jar
2.aspectjweaver.jar
3.cglib-nodep-2.1_3.jar
4.common-annotations.jar
5.commons-logging.jar
6.log4j-1.2.15.jar
7.spring.jar
-----------------------------------------------
beanを管理する機能は多くのユーザーの用途が最も広い機能であるに違いない.
注入に依存する用途も非常に広い.
どのバージョンから注釈機能が開発を簡単にしたのか分かりませんが、簡潔です.
この例では,bean管理と依存注入を注釈で実現する.
小米2携帯電話がもうすぐ発売されるので、誰もが望んでいるが、この例はこれをシナリオとしている.
1.携帯電話のインタフェース---言うまでもなく、結合性を減らすために
package com.ioc.inerface;
public interface ITelphone {
public void call();
}
2.小米実現
package com.ioc.impl;
import org.springframework.stereotype.Component;
import com.ioc.inerface.ITelphone;
@Component("telphone")
public class TelphoneImpl implements ITelphone{
public String toString(){
return " ( 2)";
}
@Override
public void call() {
System.out.println("bing~~~ , 1, 2");
}
}
3.携帯電話機が開発され、電話帳が必要で、一応単独クラス(携帯電話のコンポーネントではない)と考えられているが、電話帳は、インタフェースを必要とせず、結合度は考慮する必要はない
package com.ioc.impl;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Component;
@Component("addressBook")
public class AddressBook {
private Map mapBook = null;
private void init(){
mapBook = new HashMap();
mapBook.put(" 1", "0001");
}
public String getNum(String name){
if(mapBook == null){
init();
}
return (String) mapBook.get(name);
}
}
4.ok、携帯電話が開発され、電話帳も開発され、人間が登場した.
package com.ioc.inerface;
public interface IPerson {
public void call();
}
5.人類の実現:
package com.ioc.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ioc.inerface.IPerson;
import com.ioc.inerface.ITelphone;
import com.ioc.util.BeanFactory;
@Component("person")
public class PersonImpl implements IPerson{
@Autowired
private AddressBook addressBook;
public String toString(){
return "i am a human";
}
@Override
public void call() {
ITelphone telPhone = (ITelphone) BeanFactory.getBean("telphone");
String xm1Num = addressBook.getNum(" 1");
System.out.println("--- , :"+xm1Num);
telPhone.call();
System.out.println("--- ");
}
}
6.しかしspring管理容器はまだできていないので、使うときに再構築するのか、それは遅くない.
package com.ioc.util;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BeanFactory {
private static ClassPathXmlApplicationContext ctx ;
static{
ctx = new ClassPathXmlApplicationContext("bean.xml");
}
public static Object getBean(String beanName){
return ctx.getBean(beanName);
}
public static void closeBeanFactory(){
ctx.destroy();
}
}
7.ええ、プロファイルはまだ追加されていません
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- com.ioc , spring -->
<context:component-scan base-package="com.ioc"/>
</beans>
8.ok、テストしましょう
package com.ioc.test;
import com.ioc.inerface.IPerson;
import com.ioc.util.BeanFactory;
public class SpringIocTest {
public static void main(String[] args) {
IPerson perSon = (IPerson) BeanFactory.getBean("person");
perSon.call();
BeanFactory.closeBeanFactory();
}
}
実行結果:
---電話開始、電話番号:0001
bing~~~もしもし、小米1、私は米2です.
---電話で終わる
実は大多数の運用の中で、これらの知識は十分で、簡潔で、使いやすくて、もっと詳しい知識については、もっと勉強する必要があります.コメントを歓迎します.
添付:
----------------------------------------------
必要なjar
1.aspectjrt.jar
2.aspectjweaver.jar
3.cglib-nodep-2.1_3.jar
4.common-annotations.jar
5.commons-logging.jar
6.log4j-1.2.15.jar
7.spring.jar
-----------------------------------------------