この記事では、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 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 コンテナ オブジェクトの作成と依存オブジェクト関係の処理を提供します。
## 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>
private OrderServiceImp orderService; public OrderAction(OrderServiceImp orderService) { this.orderService = orderService; }
<bean> <constructor-arg></constructor-arg> </bean> <bean></bean>
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>
@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 サイトの他の関連記事を参照してください。