中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

學(xué)室內(nèi)設(shè)計(jì)真的那么慘嗎北京seo專員

學(xué)室內(nèi)設(shè)計(jì)真的那么慘嗎,北京seo專員,wordpress用戶部門,wordpress模板首頁圖片【知識(shí)要點(diǎn)】 控制反轉(zhuǎn)(IOC)將對(duì)象的創(chuàng)建權(quán)限交給第三方模塊完成,第三方模塊需要將創(chuàng)建好的對(duì)象,以某種合適的方式交給引用對(duì)象去使用,這個(gè)過程稱為依賴注入(DI)。如:A對(duì)象如果需要…

【知識(shí)要點(diǎn)】

  1. 控制反轉(zhuǎn)(IOC)將對(duì)象的創(chuàng)建權(quán)限交給第三方模塊完成,第三方模塊需要將創(chuàng)建好的對(duì)象,以某種合適的方式交給引用對(duì)象去使用,這個(gè)過程稱為依賴注入(DI)。如:A對(duì)象如果需要使用B對(duì)象的方法,則A類依賴B類。
  2. 對(duì)象裝配是在對(duì)象構(gòu)造過程中,對(duì)其屬性進(jìn)行初始化。對(duì)象的屬性分為簡(jiǎn)單數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型,簡(jiǎn)單數(shù)據(jù)類型通常指String、List、map等由高級(jí)語言提供的數(shù)據(jù)類型,復(fù)雜數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型或第三方的數(shù)據(jù)類型,對(duì)象的裝配主要指對(duì)復(fù)雜數(shù)據(jù)類型的依賴注入(DI)。

【實(shí)驗(yàn)?zāi)康摹?/h3>
  • 了解基于xml的裝配技術(shù)
  • 熟悉基于注解的裝配技術(shù)
  • 掌握使用注解符@Autowired和@Resource的使用

【實(shí)驗(yàn)內(nèi)容】

  • 定義學(xué)生類(Student)、課程類(Course)、班主任(ClassTeacher),學(xué)生類Student中有姓名、課程集合和班主任三個(gè)屬性,對(duì)學(xué)生對(duì)象進(jìn)行裝配。
  • 基于xml的設(shè)值注入
  • 基于xml的構(gòu)造注入
  • 基于注解的裝配
  • 基于自動(dòng)裝配

【實(shí)驗(yàn)步驟】

一. 實(shí)驗(yàn)環(huán)境搭建

  1. 標(biāo)準(zhǔn)的spring控制臺(tái)程序spring-assemble-demo5
  2. 在源代碼com.bjwl.service包中增加Student、Course、ClassTeacher三個(gè)類,具體代碼如下所示。
public class Student {  private String sname;  private Integer sage;  private List<Course> courses;  private Teacher classTeacher;  
}  public class Course {  private String courseName;  
}  public class Teacher {  private String tname;  
}

2. 基于xml的設(shè)值注入

  1. 設(shè)置注入類中必須有對(duì)應(yīng)的setter方法和無參構(gòu)造函數(shù),對(duì)類Student中的代碼改造如下所示。
public class Student {  private String sname;  private Integer sage;  private List<Course> courses;  private Teacher classTeacher;  public void setSname(String sname) {  this.sname = sname;  }  public void setSage(Integer sage) {  this.sage = sage;  }  public void setCourses(List<Course> courses) {  this.courses = courses;  }  public void setClassTeacher(Teacher classTeacher) {  this.classTeacher = classTeacher;  }  @Overridepublic String toString() {return "Student{" +"sname='" + sname + '\'' +", sage=" + sage +", courses=" + courses +", classTeacher=" + classTeacher +'}';}
} 

類Course 和Teacher 按照上述代碼添加setter方法,在此不再贅述。
2. 在resources目錄下添加spring配置文件spring-assemble-set.xml,代碼如下所示。

<beans>  <!--基于屬性注入(設(shè)置注入)的bean裝配-->  <bean id="teacher" class="com.bjwl.service.setter.Teacher">  <property name="tname" value="李老師"></property>  </bean>  <bean id="student" class="com.bjwl.service.setter.Student">  <property name="sname" value="張三"></property>  <property name="sage" value="18"></property>  <property name="classTeacher" ref="teacher"></property>  <property name="courses">  <list value-type="com.bjwl.service.setter.Course">  <bean class="com.bjwl.service.setter.Course">  <property name="courseName" value="數(shù)據(jù)結(jié)構(gòu)"></property>  </bean>  <bean class="com.bjwl.service.setter.Course">  <property name="courseName" value="數(shù)據(jù)庫原理"></property>  </bean>  </list>  </property>  </bean>  
</beans> 

在配置文件中property對(duì)應(yīng)對(duì)象的屬性, value對(duì)應(yīng)簡(jiǎn)單數(shù)據(jù)類型的屬性值;當(dāng)屬性值是由spring管理的對(duì)象時(shí)使用ref引用屬性值,當(dāng)使用list、map等類型時(shí),需要進(jìn)一步描述數(shù)據(jù)類型等信息。

  1. 編寫測(cè)試程序,在com.bjwl.service包中添加AssembleTest,定義測(cè)試方法,代碼如下所示。
public class AssembleTest {  @Test  public void setterTest(){  ApplicationContext context = new ClassPathXmlApplicationContext("spring-assemble-set.xml");  Student student = (Student)context.getBean("student");  System.out.println(student.toString());  }  
}
  1. 運(yùn)行測(cè)試程序,結(jié)果如下所示

在這里插入圖片描述

2. 基于xml的構(gòu)造注入

  1. 使用構(gòu)造注入裝配時(shí),類中必須包含帶參構(gòu)造函數(shù),學(xué)生類修改后代碼如下所示。
public class Student {  private String sname;  private Integer sage;  private List<Course> courses;  private Teacher classTeacher;  public Student(String sname, Integer sage, List<Course> courses, Teacher classTeacher) {  this.sname = sname;  this.sage = sage;  this.courses = courses;  this.classTeacher = classTeacher;  }  @Override  public String toString() {  return "Student{" +  "sname='" + sname + '\'' +  ", sage=" + sage +  ", courses=" + courses +  ", classTeacher=" + classTeacher +  '}';  }  
}

類Course 和Teacher 按照上述代碼添加setter方法,在此不再贅述。
2. 在resources目錄下添加spring配置文件spring-constructor.xml,代碼如下所示。

<beans>  <bean id="teacher" class="com.bjwl.service.constructor.Teacher">  <constructor-arg index="0" value="張三"></constructor-arg>  </bean>  <bean id="student" class="com.bjwl.service.constructor.Student">  <constructor-arg index="0" value="張三"></constructor-arg>  <constructor-arg index="1" value="18"></constructor-arg>  <constructor-arg index="3" ref="teacher"></constructor-arg>  <constructor-arg  index="2">  <list value-type="com.bjwl.service.constructor.Course">  <bean class="com.bjwl.service.constructor.Course">  <constructor-arg name="courseName" value="數(shù)據(jù)結(jié)構(gòu)"></constructor-arg>  </bean>  <bean class="com.bjwl.service.constructor.Course">  <constructor-arg name="courseName" value="數(shù)據(jù)庫原理"></constructor-arg>  </bean>  </list>  </constructor-arg >  </bean> 

代碼中constructor-arg標(biāo)簽為構(gòu)造注入標(biāo)簽,constructor-arg中index是參數(shù)的索引,value對(duì)應(yīng)簡(jiǎn)單數(shù)據(jù)類型的屬性值;當(dāng)屬性值是由spring管理的對(duì)象時(shí)使用ref引用屬性值。注意:在正式開發(fā)中通常使用constructor-arg標(biāo)簽中使用name屬性,而不是index屬性,因?yàn)閚ame對(duì)應(yīng)構(gòu)造函數(shù)的行參名,更加準(zhǔn)確。

  1. 在測(cè)類中增加constructorTest測(cè)試方法,代碼如下所示。
public class AssembleTest {  @Test  public void constructorTest(){  ApplicationContext context = new ClassPathXmlApplicationContext("spring-constructor.xml");  Student student = context.getBean("student",Student.class);  System.out.println(student.toString());  }  
}  
  1. 運(yùn)行測(cè)試程序,結(jié)果如下所示。
    在這里插入圖片描述

3. 基于注解的裝配

  1. 基于注解的裝配,需要在代碼的屬性上使用注解符,Student的代碼修改如下所示。
@Component  
public class Student {  @Value("張三")  private String sname;  @Value("18")  private Integer sage;  @Value("#{courses}")  private List<Course> courses;  @Autowired  private Teacher classTeacher;  
}  @Component  
public class Teacher {  @Value("李老師")  private String tname;  
}  @Component  
public class Course {  public void setCourseName(String courseName) {  this.courseName = courseName;  }  private String courseName;  
} 

代碼中在類上添加的注解符@Component ,代表這個(gè)類創(chuàng)建的對(duì)象交給spring進(jìn)行管理,在屬性上的@Value注解符,代表簡(jiǎn)單數(shù)據(jù)類型屬性注入,@Autowired代表對(duì)象的注入。對(duì)于list、map的注入還要借助xml完成,如:課程集合的注入。

注意:對(duì)象注入時(shí),使用@Autowired注解符是spring提供的,注入依據(jù)數(shù)據(jù)類型(byType),如:classTeacher屬性注入,是spring在對(duì)象池中尋找類型為Teacher的對(duì)象,然后進(jìn)行匹配,如果系統(tǒng)中存在兩個(gè)或兩個(gè)以上類型為Teacher的對(duì)象,需要借助另外一個(gè)注解符@Qualifier完成;另外JDK還提供了一個(gè)注解符@Resource,也可以完成依賴注入,注入依據(jù)對(duì)象的名稱(byName),上例中需要在對(duì)象池中尋找名稱為classTeacher的對(duì)象進(jìn)行注入。

  1. 在resources目錄下添加spring配置文件spring-annotation.xml,代碼如下所示
<beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:context="http://www.springframework.org/schema/context"  xmlns:util="http://www.springframework.org/schema/util"  xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd   http://www.springframework.org/schema/context   https://www.springframework.org/schema/context/spring-context.xsd  http://www.springframework.org/schema/util   http://www.springframework.org/schema/util/spring-util.xsd">  <context:annotation-config />  <context:component-scan base-package="com.bjwl.service.annotation" />  <util:list id="courses">  <bean id="course1" class="com.bjwl.service.annotation.Course" >  <property name="courseName" value="數(shù)據(jù)結(jié)構(gòu)"></property>  </bean>  <bean id="course2" class="com.bjwl.service.annotation.Course" >  <property name="courseName" value="數(shù)據(jù)庫原理"></property>  </bean>  </util:list>  
</beans> 

代碼的第3、7、8行引入context的頭部文件,第12行開啟注解注解Bean裝配,第13行聲明組件掃描位置
3. 編寫測(cè)試程序,在測(cè)試類中增加AnnotationTest 方法,代碼如下所示。

    public void setterTest(){  ApplicationContext context = new ClassPathXmlApplicationContext("spring-annotation.xml");  Student student = (Student)context.getBean("student");  System.out.println(student.toString());  }   
  1. 運(yùn)行測(cè)試程序,測(cè)試結(jié)果如下
    在這里插入圖片描述

自動(dòng)裝配技術(shù)

  1. 使用自動(dòng)裝配需要指定的屬性需要有setter方法。自動(dòng)裝配技術(shù)可以依賴使用xml方式和注解方式對(duì)bean的管理,在此僅演示使用注解方式的自動(dòng)裝配,簡(jiǎn)單數(shù)據(jù)類型使用注解的方式完成,主要演示班主任(classTeacher)的注入,修改student類,代碼如下所示。
public class Student {  @Value("李四")  private String sname;  @Value("18")  private Integer sage;  private Teacher classTeacher;  public void setSname(String sname) {  this.sname = sname;  }  public void setSage(Integer sage) {  this.sage = sage;  }  public void setClassTeacher(Teacher classTeacher) {  this.classTeacher = classTeacher;  }  @Override  public String toString() {  //省略}  
}  @Component("classTeacher")  
public class Teacher {  @Override  public String toString() {  //省略 }  @Value("zhangsan")  private String tname;  
} 
  1. 自動(dòng)裝配依據(jù)配置文件中bean標(biāo)簽的autowire屬性完成自動(dòng)裝配規(guī)則的定義,在resources目錄下添加spring配置文件spring-auto.xml,配置文件代碼如下。
<beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:context="http://www.springframework.org/schema/context"  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  http://www.springframework.org/schema/context  https://www.springframework.org/schema/context/spring-context.xsd" default-autowire="byName">  <context:annotation-config />  <context:component-scan base-package="com.bjwl.service.auto" />  
</beans>  

代碼第7行beans 指定default-autowire屬性的值為byName,通過屬性的名稱實(shí)現(xiàn)自動(dòng)裝配,此時(shí)要求student的classTeacher屬性名必須 bean所對(duì)應(yīng)的名稱完全一致,default-autowire屬性值也可以是為byType,通過屬性的類型實(shí)現(xiàn)自動(dòng)裝配。此種裝配方式簡(jiǎn)單,但是缺乏靈活度,開發(fā)時(shí)幾乎不用。

  1. 編寫測(cè)試程序,在測(cè)試類中增加AutoTest 方法,代碼如下所示。
public class AutoTest {@Testpublic void  test(){ApplicationContext context = new ClassPathXmlApplicationContext("spring-auto.xml");Student student = context.getBean("student", Student.class);System.out.println(student.toString());}
}
  1. 運(yùn)行測(cè)試程序,執(zhí)行結(jié)果如下圖所示

在這里插入圖片描述

小結(jié)

本節(jié)主要介紹了bean的裝配實(shí)現(xiàn)過程,通常對(duì)于簡(jiǎn)單數(shù)據(jù)類型數(shù)據(jù)初始主要在獲得對(duì)象后,使用setter方法完成,所謂的裝配主要是復(fù)雜數(shù)據(jù)類型的依賴注入。Bean的裝配可以基于xml配置、注解、自動(dòng)化裝配三種方式,當(dāng)前主流的使用基于注解的裝配,基于xml配置輔助,自動(dòng)化裝配技術(shù)幾乎不用。在基于注解的配置中,特別注意注解符@Autowired和@Resource匹配規(guī)則及使用byType時(shí),@Qualifier使用場(chǎng)景和原因。

http://www.risenshineclean.com/news/44679.html

相關(guān)文章:

  • 自己做的小網(wǎng)站如何發(fā)布軟文范例
  • 重慶模板網(wǎng)站多少錢烘焙甜點(diǎn)培訓(xùn)學(xué)校
  • 制作網(wǎng)站程序黑帽seo培訓(xùn)大神
  • 手機(jī)在線銷售網(wǎng)站 - 百度百度人工客服電話怎么轉(zhuǎn)人工
  • 學(xué)習(xí)做網(wǎng)站的網(wǎng)站愛站關(guān)鍵詞挖掘工具
  • 網(wǎng)游網(wǎng)站開發(fā)如何做好搜索引擎優(yōu)化工作
  • 關(guān)注建設(shè)銀行網(wǎng)站如何讓網(wǎng)站被百度收錄
  • 貴陽建設(shè)網(wǎng)站公司5118
  • 做帶會(huì)員后臺(tái)的網(wǎng)站用什么軟件阿里指數(shù)官方網(wǎng)站
  • 醫(yī)療圖片做網(wǎng)站圖片鎮(zhèn)江網(wǎng)絡(luò)
  • 沈陽順天建設(shè)集團(tuán)網(wǎng)站成都seo經(jīng)理
  • 微信平臺(tái)制作網(wǎng)站開發(fā)站長之家怎么用
  • 做阿里巴巴網(wǎng)站免費(fèi)的網(wǎng)站域名查詢
  • 品牌宣傳網(wǎng)站建設(shè)網(wǎng)站賣鏈接
  • 百度云免費(fèi)空間seo主要做什么工作
  • 肇東網(wǎng)站建設(shè)知了seo
  • 怎么做網(wǎng)站的輪播圖荊門今日頭條新聞發(fā)布
  • 中國做的比較好的網(wǎng)站網(wǎng)站提交收錄軟件
  • 網(wǎng)站開發(fā) 哪個(gè)工具更快seo網(wǎng)站關(guān)鍵詞排名軟件
  • cms做企業(yè)網(wǎng)站6長沙網(wǎng)站seo方法
  • 石家莊網(wǎng)站建設(shè)案例數(shù)據(jù)指數(shù)
  • 外國人做的漢字網(wǎng)站關(guān)鍵詞搜索排名查詢
  • 網(wǎng)站建設(shè)電子書dw網(wǎng)頁制作教程
  • 學(xué)校網(wǎng)站建設(shè)項(xiàng)目管理報(bào)告買外鏈
  • 寧波方正建設(shè)監(jiān)理網(wǎng)站seo助理
  • 做服務(wù)的網(wǎng)站html網(wǎng)頁制作模板代碼
  • 中國建設(shè)銀行官網(wǎng)站保本理財(cái)培訓(xùn)機(jī)構(gòu)咨詢
  • 導(dǎo)航網(wǎng)站怎么建福建百度seo排名點(diǎn)擊軟件
  • 佛山網(wǎng)站推廣 優(yōu)幫云線上銷售渠道有哪幾種
  • 自己怎么做網(wǎng)站的聚合頁面百度推廣怎么收費(fèi)的