欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SpringBean的裝載方式

本篇內(nèi)容主要講解“Spring Bean的裝載方式”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Spring Bean的裝載方式”吧!

成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、重慶網(wǎng)站建設(shè)公司、微信開(kāi)發(fā)、小程序制作、集團(tuán)成都定制網(wǎng)頁(yè)設(shè)計(jì)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類(lèi)型包括:砂巖浮雕等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致認(rèn)可!

Bean的裝配方式

Bean的裝配可以理解為依賴關(guān)系注入

基于XML的裝配

a) 設(shè)值注入

i.要求:

Bean 類(lèi)必須提供一個(gè)默認(rèn)的無(wú)參構(gòu)造方法。  Bean 類(lèi)必須為需要注入的屬性提供對(duì)應(yīng)的setter方法。

b) 構(gòu)造注入

package com.itheima.assemble; import java.util.List; public class User {  private String username;  private Integer password;  private List<String> List;  /*   * 1.使用構(gòu)造注入   * 1.1提供所有帶參數(shù)的有參構(gòu)造方法   */  public User(String username,Integer password,List<String> List){    super();    this.username = username;    this.password = password;    this.List = List;  }  /*   * 2.使用設(shè)值注入   * 2.1提供默認(rèn)空構(gòu)造方法   * 2.2為所有屬性提供setter方法   */  public User(){       }  public void setUsername(String username) {    this.username = username;  }  public void setPassword(Integer password) {    this.password = password;  }  public void setList(List<String> list) {    List = list;  }  @Override  /*   * (non-Javadoc)   * @see java.lang.Object#toString()   * 為了輸出是看到結(jié)果,重寫(xiě)toString()方法   */  public String toString() {    return "User [username=" + username + ", password=" + password + ", List=" + List + "]";  }}

<?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"><!-- 1.使用構(gòu)造注入方式裝配User實(shí)例 --><bean id="user1" class="com.itheima.assemble.User"><constructor-arg index="0" value="tom"></constructor-arg><constructor-arg index="1" value="123456"></constructor-arg><constructor-arg index="2">  <list>  <value>"constructorvalue1"</value>  <value>"constructorvalue2"</value>  </list></constructor-arg></bean><!-- 2.使用設(shè)值注入裝配User實(shí)例 --><bean id="user2" class="com.itheima.assemble.User">  <property name="username" value="張三"></property>  <property name="password" value="654321"></property>  <!-- 注入list集合 -->  <property name="list">    <list>      <value>"setlistvalue1"</value>      <value>"setlistvalue2"</value>    </list>  </property></bean></beans>

<constructor -arg >元素用于定義構(gòu)造方法的參數(shù),子元素<Iist>來(lái)為Use r 類(lèi)中對(duì)應(yīng)的list集合屬性注入值。

其中<property>元素用于調(diào)用Bean實(shí)例中的setter方法完成屬性賦值,從而完成依賴注入。

package com.itheima.assemble; import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext; public class XmlBeanAssembleTest {  public static void main(String[] args) {    //定義配置文件路徑    String xmlPath = "com/itheima/assemble/beans5.xml";    //加載配置文件    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);    //構(gòu)造方式輸出結(jié)果    System.out.println("構(gòu)造方式:");    System.out.println(applicationContext.getBean("user1"));    //設(shè)值方式輸出結(jié)果    System.out.println("設(shè)值方式:");    System.out.println(applicationContext.getBean("user2"));  }}

2.基于Annotation的裝配

package com.itheima.annotation; public interface UserDao {  public void save();}

package com.itheima.annotation; import org.springframework.stereotype.Repository; @Repository("userDao")public class UserDaoImpl implements UserDao{  public void save(){    System.out.println("userdao...save...");  }}

先使用@Repository 注解將UserDaolmpl 類(lèi)標(biāo)識(shí)為Spring 中的Bean,其寫(xiě)法相當(dāng)于配置文件中<bean id="userDao" class="com.itheima.annotation.UserDaolmpl"/>

package com.itheima.annotation; public interface UserService {  public void save();}

package com.itheima.annotation; import javax.annotation.Resource; import org.springframework.stereotype.Service; @Service("userService")public class UserServiceImpl implements UserService{  @Resource(name="userDao")  private UserDao userDao;  @Override  public void save() {    // TODO Auto-generated method stub    //調(diào)用userDao中的save()方法    this.userDao.save();    System.out.println("userservice...save...");  }  public void setUserDao(UserDao userDao) {    this.userDao = userDao;  }   }

@Service 注解將UserServicelmpl 類(lèi)標(biāo)識(shí)為Spring中的Bean,這相當(dāng)于配置文件中<bean id="userService" class="com.itheima.annotation.UserServicelmpl”/> 的編寫(xiě);然后使用@Resource 注解標(biāo)注在屬性u(píng)serDao上,這相當(dāng)于配置文件中<property name="userDao" ref="userDao“/>的寫(xiě)法。

package com.itheima.annotation; import javax.annotation.Resource; import org.springframework.stereotype.Controller; @Controller("userController")public class UserController {  @Resource(name="userService")  private UserService userService;  public void save(){    this.userService.save();    System.out.println("userControlle...save...");  }  public void setUserService(UserService userService) {    this.userService = userService;  }   }

Controller 注解標(biāo)注了UserController 類(lèi),這相當(dāng)于在配置文件中編寫(xiě)<bean id="userControll er" class="com .itheima.annotation.UserController"/>; 然后使用了@Resource 注解標(biāo)注在userService 屬性上,這相當(dāng)于在配置文件中編寫(xiě)<propertyname="userService" ref="userService" />

<?xml version="1.0" encoding="UTF-8"?> <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-4.3.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-4.3.xsd"><!-- 使用context命名空間,在配置文件中開(kāi)啟相應(yīng)的注釋處理器 --><context:component-scan base-package="com.itheima.annotation"></context:component-scan> </beans>

package com.itheima.annotation; import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext; public class AnnotationAssembleTest {  public static void main(String[] args) {    String xmlPath = "com/itheima/annotation/beans6.xml";    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);    //獲取UserController實(shí)例    UserController userController = (UserController)applicationContext.getBean("userController");    //調(diào)用UserController中的save()方法    userController.save();  }}

3.自動(dòng)裝配

<?xml version="1.0" encoding="UTF-8"?> <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-4.3.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-4.3.xsd"><!-- 使用bean元素的autowire屬性完成自動(dòng)裝配 --><bean id="userDao" class="com.itheima.annotation.UserDaoImpl"></bean><bean id="userService" class="com.itheima.annotation.UserServiceImpl" autowire="byName"></bean><bean id="userController" class="com.itheima.annotation.UserController" autowire="byName"></bean></beans>

增加了autowire 屬性,并將其屬性值設(shè)置為byName 。在默認(rèn)情況下,配置文件中需要通過(guò)ref 來(lái)裝配Bean ,但設(shè)置了autowire=" byName"后,Spring 會(huì)自動(dòng)尋找userServiceBean 中的屬性,并將其屬性名稱與配置文件中定義的Bean 做匹配。由于UserServicelmpl 中定義了userDao 屬'性及其setter 方法,這與配置文件中id 為userDao 的Bean 相匹配,所以Spring會(huì)自動(dòng)地將id 為userDao 的Bean 裝配到id 為userService 的Bean 中。

到此,相信大家對(duì)“Spring Bean的裝載方式”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

新聞名稱:SpringBean的裝載方式
URL鏈接:http://chinadenli.net/article6/gdoeig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站制作企業(yè)建站、全網(wǎng)營(yíng)銷(xiāo)推廣、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作