ホームページ > Java > &#&チュートリアル > Springフレームワークとは何ですか? Spring Framework IOC コンテナの概要

Springフレームワークとは何ですか? Spring Framework IOC コンテナの概要

不言
リリース: 2018-10-19 16:08:34
転載
4297 人が閲覧しました

この記事では、Spring フレームワークとは何かについて説明します。 Spring フレームワークの IOC コンテナの紹介は、参考にしていただければ幸いです。

1. Spring オープン ソース フレームワークの概要

Spring は、2003 年に登場したオープン ソース フレームワークであり、軽量の Java 開発フレームワークです。 Rod Johnson 氏の著書「Expert One-On-One J2EE Development and Design」で説明されているアイデアとプロトタイプです。これは、エンタープライズ アプリケーション開発の複雑さを解決するために作成されました。

Spring は、基本的な JavaBeans を使用して、以前は EJB でのみ可能であったことを実現します。ただし、Spring の用途はサーバー側の開発に限定されません。すべての Java アプリケーションは、シンプルさ、テスト容易性、疎結合の点で Spring の恩恵を受けることができます。簡単に言えば、Spring は軽量の制御反転 (IoC) およびアスペクト指向 (AOP) コンテナー フレームワークです。

Spring の基本フレームワークは主に、DAO、ORM、AOP、JEE、WEB、CORE の 6 つのモジュールで構成されています。

Springフレームワークとは何ですか? Spring Framework IOC コンテナの概要

##Spring DAO: Spring は、JDBC: JdbcTemplate テンプレート ツール クラスの操作サポートを提供します。

Spring ORM: Spring は ORM フレームワークと統合できます。たとえば、Spring は Hibernate フレームワークを統合しており、Spring は Hibernate の操作を簡素化する HibernateDaoSupport ツール クラスも提供します。
Spring WEB: Spring は Struts、Springmvc のサポートを提供し、WEB 開発をサポートします。同時に、Spring 自体も MVC に基づくソリューションを提供します。
Spring AOP: Spring はアスペクト指向プログラミングを提供し、サービス層にトランザクション制御を追加するなど、特定の層にトランザクション管理を提供できます。
Spring JEE: EJB などの J2EE 開発仕様のサポート。
Spring Core: IOC コンテナ オブジェクトの作成と依存オブジェクト関係の処理を提供します。

## 2. Spring 下の IOC コンテナと DI (Dependency Injection)

## IOC コンテナ: 依存性注入機能を備えたコンテナです。 IOC コンテナは、アプリケーション内のオブジェクトのインスタンス化、検索、構成、およびこれらのオブジェクト間の依存関係の確立を行います。通常、新しいインスタンスはプログラマによって制御され、「制御の反転」とは、新しいインスタンスの作業がプログラマによって行われず、Spring コンテナに渡されることを意味します。 。 Spring では、BeanFactory が IOC コンテナの実際の代表です。

DI (依存性注入): コンテナーはオブジェクトを作成した後、オブジェクトの依存関係を処理します。

依存性注入スプリング注入メソッド:

セット注入メソッド

静的ファクトリー注入メソッド

コンストラクター メソッド注入メソッド

アノテーションに基づくメソッド

1. インジェクション メソッドの設定:

コントロール層コード:

private OrderServiceImp orderService;
    
public void setOrderService(OrderServiceImp orderService) {
       this.orderService = orderService;
}
ログイン後にコピー

Spring 設定 XML ファイル: この設定では、OrderAction クラスが orderService 属性を持つことを宣言します。プログラムの実行中に、インスタンス化された orderService オブジェクトが setOrderService メソッドを使用して挿入されます。

<bean>
        <property></property>
</bean>
<bean></bean>
ログイン後にコピー
2. コンストラクター注入メソッド:

private OrderServiceImp orderService;
    
public OrderAction(OrderServiceImp orderService) {
        this.orderService = orderService;
    }
ログイン後にコピー
コントロール層コード:

<bean>
      <constructor-arg></constructor-arg>
</bean>
<bean></bean>
ログイン後にコピー
Spring 構成

XML

ファイル:

@Autowired   //@Resource
private OrderServiceImp orderService;
ログイン後にコピー
3 、アノテーションベースの方法 (推奨、より便利で少ない構成) コントロール層コード:

@Service("orderService")
public class OrderServiceImp implements IOrderService {

    @Autowired
    private JavaOrderMDaoImp javaOrderMDao;

    @Autowired
    private JavaOrderDDaoImp javaOrderDDao;

    @Override
    public List<javaordermlist> findOrderM(OrderSearch search) {
        return javaOrderMDao.findJavaOrderM(search);
    }

    @Override
    public List<javaorderdlist> findOrderD(OrderSearch search) {
        return javaOrderDDao.findJavaOrderD(search);
    }

}</javaorderdlist></javaordermlist>
ログイン後にコピー

サービス層コード:

@Repository("javaOrderMDao")
public class JavaOrderMDaoImp extends BaseHibernateDAO<javaorderm> implements IJavaOrderMDao {...}</javaorderm>
ログイン後にコピー
DAO 層コード:

@Repository("javaOrderDDao")
public class JavaOrderDDaoImp extendsBaseHibernateDAO<javaorderd> implements IJavaOrderDDao {...}</javaorderd>
ログイン後にコピー
@Component         把对象加入ioc容器,对象引用名称是类名,第一个字母小写
@Component(“name”) 把指定名称的对象,加入ioc容器
@Repository        主要用于标识加入容器的对象是一个持久层的组件(类)
@Service           主要用于标识加入容器的对象是一个业务逻辑层的组件
@Controller        主要用于标识加入容器的对象是一个控制层的组件
@Resource          注入属性(DI), 会从容器中找对象注入到@Resource修饰的对象上
@Autowired         注入属性(DI), 会从容器中找对象注入到@Autowired修饰的对象上
ログイン後にコピー

注:

## ⑴ 永続層 DAO 層のアノテーション Repository で名前を指定しますが、Service 層で宣言された名前は一貫している必要があります。 ⑵ サービス層 サービス層アノテーション Service で指定する名前であり、制御層で宣言した名前と一致している必要があります。

⑶ 依存関係アノテーションを注入するためのアノテーション方法:

rrreee# ⑷ アノテーションは構成を簡素化し、開発効率を向上させることができますが、その後のメンテナンスにも役立ちません。

注: @Autowired と @Resource

の違い

以上がSpringフレームワークとは何ですか? Spring Framework IOC コンテナの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート