春はロッド・ジョンソンによって作成された2003年のJavaのオープンソースフレームワークで軽量な上昇です。春の伝統的なJ2EEアプリケーションの低効率の開発、オープンソースのミドルウェアソリューションは、プレゼンテーション層、ビジネス層と永続化層ではなく、プログラムの特定の層にだけ焦点全体のJ2EEアプリケーション、春のレイヤーを提供して。春は言うことができる「ワンストップ(フルスタック)」オプションのエンタープライズ・アプリケーションの開発です。しかし、春はそれらの既存の枠組みを交換する必要はありませんが、シームレスにと統合します。
簡潔には、スプリングは、コンテナフレームに対向軽量コントロール(IOC)の反転、部分(AOP)です。
デカップリング、簡素化の開発を容易にするための1、
春が提供するIoCコンテナ、我々は、オブジェクト間の関係に頼ることができる春が過度のカップリングハードコードプログラム原因を回避するように制御言及。春では、ユーザーは、もはや単一インスタンスモードのクラスを持っている、そのようなファイルの解析コードのような特性は、これらの基本的なニーズに書かれていない、我々は、上位のアプリケーションに集中することができます。
2、AOPプログラミングのサポート
AOP春の提供により、多くの人が簡単にAOPによって対処することができる伝統的なOOP機能を使用して達成するのは容易ではないが、アスペクト指向プログラミングを容易にします。
3、宣言型トランザクションのサポート
春には、我々は、開発効率と品質を向上させ、宣言的な方法の柔軟性によってトランザクションを管理するために、トランザクション管理コードのうち、単調な退屈から逃れることができます。
プログラムに簡単にテスト4、
それは、春には、テストは、もはや高価な操作ですが、すぐに物事を行う、ほぼすべてのテスト作業非コンテナに依存した方法を用いてプログラムすることはできません。たとえば:春はJunit4のサポートのために、あなたは簡単に春のテストプログラムをコメントすることができます。
5、優れたフレームワークの様々な簡単な統合
スプリングは、優れたオープンソースのフレームワークのさまざまを排除するものではない、逆に、バネは、様々なフレームワークを使用することの難しさを減らすことができ、ばねは、優れた(例えば、ストラット、休止状態、MyBatisの、ヘッセ、石英など)、フレームワークなどの様々な直接サポートを提供します。
6、のJava EE APIの困難さを軽減
多くのJava EE APIの使用が困難スプリングは(等JDBC、JavaMailのリモートコール、など)スプリングの簡単な包装によって、薄いカプセル化層を提供し、これらのJava EEのAPIを使用することの難しさを大幅に低減します。
プロジェクトを作成し、jarファイルのパッケージをインポートします
コアパッケージ:豆、コンテキスト、コア、発現;
ログパッケージ: apache.commons.logging
制約を導入:豆制約を主構成ファイルヘッダに導入。
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < 豆のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxmlns = "http://www.springframework.org /スキーマ/豆」 XSI:のschemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" > </ 豆>
测试:将自定义对象由自己创建交由Spring管理
package com.Gary.bean; public class User { private Integer u_id; private String u_username; private String u_password; public Integer getU_id() { return u_id; } public void setU_id(Integer u_id) { this.u_id = u_id; } public String getU_username() { return u_username; } public void setU_username(String u_username) { this.u_username = u_username; } public String getU_password() { return u_password; } public void setU_password(String u_password) { this.u_password = u_password; } }
package com.Gary.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.Gary.bean.User; public class HelloSpring { @Test public void Test1() { User u = new User(); System.out.println("Test1()"+u); } //Spring是一个容器,它将帮助我们管理对象 @Test public void Test2() { //根据spring配置文件获取容器对象 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); //User u = ac.getBean(User.class); //通过getBean获取配置好的user对象,程序员向Spring容器要对象 User u = (User) ac.getBean("user"); System.out.println("Test2()"+u); } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <bean name="user" class="com.Gary.bean.User"> </bean> </beans>
Spring-IoC | DI概念介绍:(要实现IOC依赖DI的支持)
IoC(Inversion of Control):反转控制:将我们自己创建对象的工作交给Spring容器帮我们完成;
DI(Dependency Injection):依赖注入:将值通过配置的方式为变量初始化/赋值(注入);
IOC的反转:创建对象这份工作由我们自己执行反转给spring帮我们执行;
IOC的控制:就是由spring帮我们负责创建销毁对象,掌控对象的生命周期等,我们在需要使用对象的时候跟Spring申请即可;
IOC是一种编程思想,也是一种新的设计模式,它需要DI(依赖注入)技术的支持;
c)注入方式:set方法注入、构造注入、字段注入(不推荐);
d)注入类型:
i.值类型(value) – 八大基本数据类型;
ii.引用类型(ref) – String、自定义对象;
spring是一个容器,它将帮我们管理对象
传统方式给u_id赋值
@Test public void Test1() { User u = new User(); //传统方式给u_id赋值 u.setU_id(1); System.out.println("Test1()"+u); }
Spring给u_id赋值
@Test public void Test2() { //根据spring配置文件获取容器对象 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); //User u = ac.getBean(User.class); //通过getBean获取配置好的user对象,程序员向Spring容器要对象 User u = (User) ac.getBean("user"); System.out.println("Test2()"+u); }
<bean name="user" class="com.Gary.bean.User"> <!-- 为u_id注入了一个id为2的值 --> <property name="u_id" value="2"></property> </bean>
package com.Gary.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.Gary.bean.User; public class HelloSpring { @Test public void Test1() { User u = new User(); //传统方式给u_id赋值 u.setU_id(1); System.out.println("Test1()"+u); } //Spring是一个容器,它将帮助我们管理对象 @Test public void Test2() { //根据spring配置文件获取容器对象 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); //User u = ac.getBean(User.class); //通过getBean获取配置好的user对象,程序员向Spring容器要对象 User u = (User) ac.getBean("user"); System.out.println("Test2()"+u); } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <bean name="user" class="com.Gary.bean.User"> <!-- 为u_id注入了一个id为2的值 --> <property name="u_id" value="2"></property> </bean> </beans>
使用Spring改造Servlet项目对象关系依赖图