Spring(三、Spring Bean自動組立と注記注入)
1.XMLでの自動アセンブリ実装クラス
プロファイル
テストクラス
SpringコンテナはBeanを自動的にアセンブリします.必要な参考はbeanのautowireプロパティです.自動アセンブリには3つの方法があります:(1)名前に基づいて自動的にアセンブリ(byName).springコンテナのBeanの名前が一意であるため、曖昧さは生じません.この方法を推奨します.(2)タイプに応じて自動的にアセンブリします.(byType).Springコンテナに注入するbeanと同じタイプのBeanが複数見つかる可能性があるので曖昧になりますが、SpringコンテナはどのBeanを注入するか分からないので、異常を投げ出すことになります.(3)コンストラクタによる自動アセンブリ(constructor).詳細(3):a)アセンブリbeanの構造方法に対応するID、ない場合は、プロファイルに手動でアセンブリします.
2.注釈を使用する自動アセンブリを実現する(1)注釈形式でbeanをアセンブリするが、構成ファイルでbeanを構成する(2)Springを使用しない場合、デフォルトでは注釈を閉じるi.注釈iiをオンにする必要がある.ヘッダーにcontextの情報を追加する
iii.オン
iv.@Autowired::::注釈の使用(setメソッドを書かなくても)
自動検出bean
パッケージ内のオブジェクトに対してBeanを自動的に生成します:[各クラスに追加:@Component("bean Idを表す")]
完全なコードの例:最初のステップ:プロファイル内で構成
ステップ2:クラスの作成
ステップ3:テストクラスの作成
Bean管理でよく使われる注釈第1部注釈:クラスオブジェクトを生成するための注釈機能@Component生成クラスオブジェクト@Repository Dao実装クラスを注釈するために使用@Service実装クラスを注釈するために使用@Controller実装クラスを注釈するために使用@Controller実装クラスを注釈するために使用される4つの注釈の機能は同じであり、いずれもクラスを生成するために使用されるオブジェクトである.クラスで使用可能
第2部注釈:注入の操作をして、クラスのオブジェクトを別のクラスに注入して、このような中で注入するオブジェクトがあるクラスを宣言して、1つの属性として、setの方法で@Autowriedを使って自動注入(自動組み立て)を行って、クラスのオブジェクト名によって、クラスのオブジェクトを探し当てます
@Resource(name="値")を使用して、どのオブジェクト注入を指定するかを実装します.
例:最初のステップ:エンティティークラスの作成
ステップ2:プロファイル内で構成
ステップ3:テストクラスの作成
public class Person {
public void write(){
System.out.println(" ");
}
}
public class Student {
private int id;
private String name;
private Person person;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
プロファイル
<bean id="person" class="com.iotek.bean.Person">bean>
<bean id="stu" class="com.iotek.bean.Student" autowire="byName">bean>
テストクラス
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Student stu=context.getBean("stu",Student.class);
stu.getPerson().write();
}
SpringコンテナはBeanを自動的にアセンブリします.必要な参考はbeanのautowireプロパティです.自動アセンブリには3つの方法があります:(1)名前に基づいて自動的にアセンブリ(byName).springコンテナのBeanの名前が一意であるため、曖昧さは生じません.この方法を推奨します.(2)タイプに応じて自動的にアセンブリします.(byType).Springコンテナに注入するbeanと同じタイプのBeanが複数見つかる可能性があるので曖昧になりますが、SpringコンテナはどのBeanを注入するか分からないので、異常を投げ出すことになります.(3)コンストラクタによる自動アセンブリ(constructor).詳細(3):a)アセンブリbeanの構造方法に対応するID、ない場合は、プロファイルに手動でアセンブリします.
<bean id="stu" class="com.iotek.bean.Student" autowire="constructor">
<constructor-arg name="card" ref="card"> constructor-arg>
<constructor-arg name="name" value="aaa">constructor-arg>
bean>
2.注釈を使用する自動アセンブリを実現する(1)注釈形式でbeanをアセンブリするが、構成ファイルでbeanを構成する(2)Springを使用しない場合、デフォルトでは注釈を閉じるi.注釈iiをオンにする必要がある.ヘッダーにcontextの情報を追加する
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
iii.オン
<context:annotation-config>context:annotation-config>
iv.@Autowired::::注釈の使用(setメソッドを書かなくても)
@Autowired
private Person person;
自動検出bean
<context:component-scan base-package="com.iotek.bean">context:component-scan>
パッケージ内のオブジェクトに対してBeanを自動的に生成します:[各クラスに追加:@Component("bean Idを表す")]
@Component("student")
public class Student {
完全なコードの例:最初のステップ:プロファイル内で構成
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:annotation-config>context:annotation-config>
<context:component-scan base-package="com.iotek.bean">context:component-scan>
beans>
ステップ2:クラスの作成
// xml
"person" class="com.iotek.bean.Person">
@Component("person")
public class Person {
public void write(){
System.out.println(" ");
}
}
ステップ3:テストクラスの作成
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Person person=context.getBean("person", Person.class);
person.write();
}
}
Bean管理でよく使われる注釈第1部注釈:クラスオブジェクトを生成するための注釈機能@Component生成クラスオブジェクト@Repository Dao実装クラスを注釈するために使用@Service実装クラスを注釈するために使用@Controller実装クラスを注釈するために使用@Controller実装クラスを注釈するために使用される4つの注釈の機能は同じであり、いずれもクラスを生成するために使用されるオブジェクトである.クラスで使用可能
@Controller(value="person")
public class Person{
}
第2部注釈:注入の操作をして、クラスのオブジェクトを別のクラスに注入して、このような中で注入するオブジェクトがあるクラスを宣言して、1つの属性として、setの方法で@Autowriedを使って自動注入(自動組み立て)を行って、クラスのオブジェクト名によって、クラスのオブジェクトを探し当てます
@Autowried
private Person person;
@Resource(name="値")を使用して、どのオブジェクト注入を指定するかを実装します.
@Resource(name="person")
private Person person;
例:最初のステップ:エンティティークラスの作成
import org.springframework.stereotype.Component;
@Component("person")
public class Person {
public void write(){
System.out.println(" ");
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("student")
public class Student {
@Resource(name="person")
private Person person;
public void read(){
person.write();
}
}
ステップ2:プロファイル内で構成
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:annotation-config>context:annotation-config>
<context:component-scan base-package="com.iotek.bean">context:component-scan>
beans>
ステップ3:テストクラスの作成
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.iotek.bean.Person;
import com.iotek.bean.Student;
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Student stu=context.getBean("student",Student.class);
stu.read();
}
}