何がスプリングですか


springはソースのjavaフレームワークであり、ウェブmvc、orm、ejb、rmi、javamailなどの各種の主流技術を集めています.彼は接着済のように、実際のプロジェクトの中で前のバックグラウンドプログラムを結合して、完全なシステムを構築しています.springの各コンポーネントは独立しても使用できます.springが提供する機能の一部であるSpringを選択的に使用して、IOC Inversion of Controlとは、別の概念DI-Dependency Injectionに依存して注入されます.どうやってIOCを理解しますか?IOCは正確に、彼は思想、概念であり、OOPはプログラミング思想と同じで、大量のプロジェクト実践の中でまとめられた素晴らしいプログラム設計思想であると言います.もとのプログラム設計では、私達は通常new XXX()を通しています.その中でXXXはある種類の名称です.ioc思想が導入されていない時に、私達のプログラムにはnew XXX()というコードが大量に溢れています.これらのコードはすべて私たちプログラマが手作業で作成する必要があります.ioc思想を導入した後、対象の管理はすべてSpringという容器に任せて管理しています.私達のプログラムに対応する種類の対象が必要な時、私達は直接Spring容器から取得します.つまりSpring容器は、発生した対象を私達のプログラムに渡しています.この方法を注入といいます.(医者が怖い針を持って、液体を私達のお尻に注入するのと同じです.なぜ注入するのですか?お尻が必要ですか?必要ですから、あげます.これはDIです.)IOCの深層的な意味は、元の対象から生まれたイニシアチブをSpring容器に渡し、Spring容器から対象のnewを完成させる過程で、対象を私達が必要とする時に渡すということです.SpringはIOC思想の完璧な産物と実践者です.aop Aspect Oriented Programemingとは何ですか?OOPプログラミング思想の一種である昇華OOPは対象を強調し、aopは面を強調している(餃子ではない).では、何が顔ですか?私達の教室を例に挙げると、教室の前のドアと後ろの窓は同じ面です.このような断面を通して、私達のこの空間を室内、窓の外と外の3つの部分に分けました.私達が食べているハンブルクを例に挙げると、ハンブルクのサンドイッチの前後は一つの面です.断面を通して、私をこのような断面にします.私達の普通のパンはパンの上の方に分けられています.サンドイッチ、パンの下の方に分けられています.もし私達のプログラムコードで言えば、私達のdaoがjdbcで実現すれば、daoの各方法にはこのコードが溢れています.接続を開けてsql文を閉じて接続します.この時、sqlの前後に断面を作ることができます.の断面で、私達のプログラムコードを分離して、接続を開けて、クローズして、リンクをAOPに渡します.私達のプログラマは異なるsql文の部分を実行することに注目して、daoの各方法の中で重複したオープン接続とクローズコードを作成することを避けました.もし私達のdaoがhibernaneで実現すれば、daoの各方法にはこのようなコードが溢れています.このような断面を通して、私達のプログラムコードを分離して、sessionを開けて、sessionを閉じて、AOPに渡します.私達のプログラマーはsessionを実行することだけに注目して、コードの重複を避けたほうがいいですか?長い思想体験の過程です.幸運を祈ります.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最近ネットで多くの人が質問していますが、スプリング依存注入について何かメリットがありますか?「見ました.いいところは、いつかクラスが変わったら、xmlで変えてもいいです.オリジナルのjava newキーワードを使って、私もクラスを変えてもいいです.newの後のクラスを変えてもいいです.xmlとjavaを変えてもいいです.仕事量は同じです.何のメリットがあるかは分かりません.この伝説に込められた利点は、感じられませんでした」
        これを見て、springを勉強したばかりの友達にはこんな誤解があると思いますが、実はそうではありません.spring依存注入のメリットを以下の例で説明します.
  
public interface PersonDao {

 public void add();

}

    PersonDao  
public class PersonDaoBean implements PersonDao {
 public void add(){
  System.out.println("  PersonDaoBean  add()  ");
 }
}

 


public class PersonServiceBean implements PersonService {    
    private PersonDao personDao;    
        
    public PersonDao getPersonDao() {    
        return personDao;    
    }    
   
    public void setPersonDao(PersonDao personDao) {    
        this.personDao = personDao;    
    }    
        
    public void save(){    
        personDao.add();    
    }    
}
 
<?xml version="1.0" encoding="UTF-8"?>   
<beans xmlns="http://www.springframework.org/schema/beans"   
       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-2.5.xsd">   
           <bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean"></bean>   
          <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">   
            <property name="personDao" ref="personDao"></property>   
          </bean>   
</beans> 
 
このようなサービス層の中には、PersonDaoBeanの姿は見られませんでした.つまり、この実現類は誰かに関心がないということです.私たちはPersonDaoというインターフェースを通じて注入されたオブジェクトを引用して、インターフェースを通じてその方法を呼び出すと、サービス層のコンポーネントとDAO層のコンポーネントは完全に結合されています.
 
注入に依存しているというか、反転を制御しているというか、配置ファイルを使用しているという考えの唯一の利点は、モジュールの再利用性の活性を高めることです.一般的な配置ファイルに保存されているのはデータ、キーの値などです.Springの配置ファイルは、引用クラスとクラスに伝えるパラメータを配置ファイルに入れています.これは以前に書いたものよりも柔軟性があります.より重用性がある.