スプリングIOC容器アセンブリアノテーションベースの構成Bean_

豆のインスタンス化

1.インポートジャーパッケージ(不可欠)

2.インスタンス化された豆

  • applicationContext.xmlを(XMLの文言)
<bean id="userDao" class="com.igeekhome.dao.impl.UserDao"></bean>
  • ご注意文言
  1. 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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解扫描
    context:component-scan 配置spring ioc容器开启注解扫描,扫描指定包下的@Component修饰的类,将这些类的对象创建交给spring ioc容器完成
    base-package: 需要扫描哪些包(及其子包)
    -->
    <context:component-scan base-package="com.igeekhome"></context:component-scan>
</beans>
  1. コンポーネント@、サービス@、コントローラ@、リポジトリ@インスタンス化Beanに使用

    私たちは、自動走査機構部品を導入するためのSpring3.0、それはコンポーネント@、サービス@、コントローラ@マークを探すことができ 、リポジトリ@ クラスパスの下に注釈クラス、および春のコンテナ管理にこれらのクラスを組み込むために
    、サービス@リポジトリ@コントローラーは、@Componentサブノートを導出します

  • 注釈データアクセスコンポーネント(例えば、層アセンブリDAO)用@Repository
  • ビジネス層コンポーネントの@Serviceラベル(例えば、サービス層)
  • @Controller層を制御するための組立体標識(例えば、動作中の層ストラット)
  • コンポーネントが分類されていない場合@Componentはコンポーネントを指し、我々はマークに、このアノテーションを使用することができます
/*
注解:添加在实现类上(思想同配置文件)
@Component 等价于  <bean id="userDaoImpl" class="com.igeekhome.dao.impl.UserDaoImpl"></bean>
id:默认是类名(首字母小写) value:bean的id
@Component(value = "userDao")
@Component("userDao")
 */
@Repository("userDao")
public class UserDaoImpl implements IUserDao {
    public void select() {
        System.out.println("UserDao...select...");
    }
}

依存性注入Beanプロパティ

単純なデータ型の依存性注入

スプリング3.0後、提供@value注釈データを単に注入行うことができ

/*
@Component 
@Component(value="customerService")
@Service(value="customerService")
四者都等价
*/
@Service("customerService")
public class CustomerService {
    //简单类型的成员变量
    @Value("Rose")//参数的值简单类型
    private String name="Jack";
    
    //保存业务方法
    public void save(){
       System.out.println("CustomerService业务层被调用了。。。");
       System.out.println("name:"+name);
    }
}

複合型のデータ依存性注入

1. @valueがSPELを結合 - とspring3.0後

@Service("userService")
public class UserServiceImpl implements IUserService {
   /*<bean id="userDao" class="com.igeekhome.dao.impl.UserDao">           </bean>
      @Value("#{bean的id}")
     */
     //写法一 (在属性声明上面注入,底层自动还是生成setUserDao())
    @Value("#{userDao}")
    private UserDaoImpl userDao;

    //写法二
     @Value("#{userDao}")
    public void setUserDao(UserDaoImpl userDao) {
        this.userDao = userDao;
    }
    
    public void list() {
        System.out.println("UserServiceImpl...list...");
        userDao.select();
    }
}

2. @Autowiredの組み合わせ@Qualifier

@Autowired:単独で使用する場合、単独で使用することができ、注入の種類に応じて行う(春にルックスは豆と注入の容器com.igeekhome.dao.impl.UserDaoImpl型IOC、そうでない場合は、確かに故障を注入し、もし豆単一マッチングを発見し、成功した注射;豆の同じタイプの複数見つかった場合、その後、豆注入を選択

@Qualifier:名前によって注入、@Autowiredを結合

@Autowired//默认按照类型注入的
@Qualifier("userDao")//必须配合@Autowired注解使用,根据名字注入
private UserDaoImpl userDao;

(JDKベース)3.JSR-250規格は、注釈を提供@Resource

name属性を指定しない場合は、最初の注入は、BeanのuserDaoのコンテナにBean名/ IDの名前(修正注釈属性名)と表情で行われ、見つかった場合は、注入が成功しました。名前がBeanに対応する噴射に従って検出されない場合、アセンブリは、何の変化型、噴射不良がない場合、例外がスローされ、種類に応じて使用される、豆容器の単一のタイプが存在する場合、成功した注入、コンテナなら同じタイプの豆、噴射不良が複数ある(単一マッチングBeanを期待が、見出さ2:userDaoxxx、userDaox)

name属性が指定されている場合、それは名前に基づいて注入されます

@Resource//(name="userDao")
private UserDaoImpl userDao;

4.JSR-330標準(JDK)と@Inject @Namedコメントを提供(推奨されません)

jarファイルをインポートする必要がありjavax.inject

使用@Inject、注入の種類、および@Inject @Namedノートの使用に応じて、デフォルトでは、その名前によって注入します。使用方法と@Autowired組み合わせの一貫した使用@Qualifier

豆の初期化と破壊

言葉遣いで1.applicationContext.xml

<!--
    init-method:指定初始化方法
    destroy-method: 指定销毁触发方法
    -->
    <bean id="lifecycle" class="com.igeekhome.bean.LifeCycleBean" scope="singleton" init-method="initMethod" destroy-method="destroyMethod"></bean> 

2.ノート言葉遣い

INIT-方法と同等の初期化方法を示す使用@PostConstructノートは、---初期化方法を指定し
破壊する方法を示す、@PreDestroyノートを使用----破壊法は、指定されたオブジェクトの破棄方法と等価です

@Repository("userDao")
public class UserDaoImpl implements IUserDao {
    public void select() {
        System.out.println("UserDao...select...");
    }

    //init-method
    @PostConstruct
    public void init() {
        System.out.println("init...");
    }
    //destory-method
    @PreDestroy
    public void destory() {
        System.out.println("destory");
    }
}

豆の範囲

言葉遣いで1.applicationContext.xml

デフォルトでは、単一の実施形態、プロトタイプマルチ例シングルトンであります

<bean id=”” class=”” scope=”prototype”>

2.ノート言葉遣い

@Scopeアノテーションで、豆の範囲を指定

@Service("userService")
//@Scope("singleton")默认是单列
@Scope("prototype")
public class UserServiceImpl implements IUserService { }

リマーク

唯一のSpring構成ファイル内の注釈スキャンを開く
@Component @Autowired @Resource @PostConstruct @PreDestroyと他のノートを使用します

おすすめ

転載: www.cnblogs.com/hublogs/p/11994886.html