日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring入门案例plus

發(fā)布時間:2024/2/28 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring入门案例plus 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 誰控制誰:在傳統(tǒng)的開發(fā)模式下,我們都是采用直接 new 一個對象的方式來創(chuàng)建對象,也就是說你依賴的對象直接由你自己控制,但是有了 IoC 容器后,則直接由 IoC 容器來控制。所以“誰控制誰”,當然是 IoC 容器控制對象。
  • ?控制什么:控制對象。
  • ?什么是反轉(zhuǎn):沒有 IoC 的時候我們都是在自己對象中主動去創(chuàng)建被依賴的對象,這是正轉(zhuǎn)。但是有了 IoC 后,所依賴的對象直接由 IoC 容器創(chuàng)建后注入到被注入的對象中,依賴的對象由原來的主動獲取變成被動接受,所以是反轉(zhuǎn)。
  • ?哪些方面反轉(zhuǎn)了:所依賴對象的獲取方式被反轉(zhuǎn)了。
  • ?

    三種注入方式

    構(gòu)造器注入:構(gòu)造器注入,顧名思義就是被注入的對象通過在其構(gòu)造方法中聲明依賴對象的參數(shù)列表,讓外部知道它需要哪些依賴對象。

    setter 方法注入:?對于 JavaBean 對象而言,我們一般都是通過 getter 和 setter 方法來訪問和設(shè)置對象的屬性。所以,當前對象只需要為其所依賴的對象提供相對應(yīng)的 setter 方法,就可以通過該方法將相應(yīng)的依賴對象設(shè)置到被注入對象中。

    接口方式注入?:接口方式注入顯得比較霸道,因為它需要被依賴的對象實現(xiàn)不必要的接口,帶有侵入性。一般都不推薦這種方式。

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion> ?<groupId>com.henu</groupId><artifactId>spring01_ioc</artifactId><version>1.0-SNAPSHOT</version> ?<dependencies><!-- spring4.3.20 --><!-- spring-context --><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.20.RELEASE</version></dependency> ?<!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.20.RELEASE</version></dependency> ?<!-- spring-core --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.20.RELEASE</version></dependency><!-- spring-beans --><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.20.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-expression --><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>4.3.20.RELEASE</version></dependency> ?<!-- https://mvnrepository.com/artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency> ?<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.20</version><scope>provided</scope></dependency> ?</dependencies> ? </project>

    BeautifulGirl

    package com.henu.bean; ? import lombok.Data; import java.util.Date; ? /*** @author George* @description**/ ? @Data public class BeautifulGirl {public String like;public Date date;public void grilSay(){System.out.println("BeautifulGirl.grilSay()");} }

    YongBoy

    package com.henu.bean; ? import lombok.Data; ? /*** @author George* @description**/ @Data public class YongBoy { ?public ?BeautifulGirl girl; ?public ?void happy() {System.out.println("哈哈,年輕人有女朋友了......");} ? }

    Crm

    package com.henu.bean; ? import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; ? import java.util.Date; ? /*** @author George* @description**/ @Data //全參 @AllArgsConstructor //無參 @NoArgsConstructor public class Crm {private int age;private String name;private Date birthday; ? } ?

    User

    package com.henu.bean; ? import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; ? import java.util.List; ? /*** @author George* @description**/ @Data //無參 @NoArgsConstructor //有參 @AllArgsConstructor public class User {private int id;private String name;private String pwd;private List<Car> cars; }

    Car

    package com.henu.bean; ? import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; ? /*** @author George* @description**/ @Data @AllArgsConstructor @NoArgsConstructor public class Car {private String logo; }

    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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> ?<bean id="date" class="java.util.Date"></bean> ?<!-- 與name屬性一模一樣,不過不能使用特殊字符 --><bean id="BeautifulGirl" class="com.henu.bean.BeautifulGirl"><property name="like" value="唱、跳、rap"></property><!--這里要引用date,則需定義bean, 如上方所示--><property name="date" ref="date"></property></bean> ?<bean id="yongBoy" class="com.henu.bean.YongBoy"><!-- 引用類型注入:為 yongBoy下的girl對象,即girl是yongBoy中一個對象 --><property name="girl" ref="BeautifulGirl"></property></bean> ? ?<!--基于構(gòu)造方法索引的注入--><!--<bean id="crm" class="com.henu.bean.Crm"><constructor-arg index="0" value="25"></constructor-arg><constructor-arg index="1" value="George"></constructor-arg><constructor-arg index="2" ref="date"></constructor-arg></bean>--> ?<!-- 基于構(gòu)造方法類型注入 --><!--<bean id="crm" class="com.henu.bean.Crm"><constructor-arg type="int" value="23"></constructor-arg><constructor-arg type="java.lang.String" value="George"></constructor-arg><constructor-arg type="java.util.Date" ref="date"></constructor-arg></bean>--> ?<!--按照參數(shù)名稱注入--><bean id="crm" class="com.henu.bean.Crm"><constructor-arg name="age" value="23"></constructor-arg><constructor-arg name="name" value="George"></constructor-arg><constructor-arg name="birthday" ref="date"></constructor-arg></bean> ?<bean id="car1" class="com.henu.bean.Car"><property name="logo" value="bmw"></property></bean><bean id="car2" class="com.henu.bean.Car"><property name="logo" value="oooo"></property></bean> ?<!--set方法注入 集合屬性注入--><bean name="user" class="com.henu.bean.User"><property name="id" value="10001"></property><property name="name" value="George"></property><property name="pwd" value="123456"></property><property name="cars"><list><ref bean="car1"></ref><ref bean="car2"></ref></list></property></bean> ? </beans>

    SpringTest

    package com.henu.test; ? import com.henu.bean.BeautifulGirl; import com.henu.bean.Crm; import com.henu.bean.User; import com.henu.bean.YongBoy; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; ? /*** @author George* @description**/ public class SpringTest {@Testpublic void test01(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");YongBoy yongBoy = context.getBean(YongBoy.class);BeautifulGirl girl = context.getBean(BeautifulGirl.class);Crm crm = context.getBean(Crm.class);User user = context.getBean(User.class);yongBoy.happy();girl.grilSay();System.out.println(crm.getName() + "->" + crm.getAge() + "->" + crm.getBirthday());System.out.println(user);} }

    結(jié)果展示:

    哈哈,年輕人有女朋友了...... BeautifulGirl.grilSay()唱、跳、rap->>>Mon Sep 16 18:53:10 CST 2019 George->23->Mon Sep 16 19:16:17 CST 2019 User(id=10001, name=George, pwd=123456, cars=[Car(logo=bmw), Car(logo=oooo)])

    ?

    總結(jié)

    以上是生活随笔為你收集整理的spring入门案例plus的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。