中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Bean裝載方式代碼實例解析

發布時間:2020-10-13 03:25:45 來源:腳本之家 閱讀:195 作者:WODioe 欄目:編程語言

這篇文章主要介紹了Spring Bean裝載方式代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Bean的裝配方式

Bean的裝配可以理解為依賴關系注入

基于XML的裝配

  a) 設值注入

i.要求:

  • Bean 類必須提供一個默認的無參構造方法。
  • Bean 類必須為需要注入的屬性提供對應的setter方法。

  b) 構造注入

package com.itheima.assemble;
 
import java.util.List;
 
public class User {
  private String username;
  private Integer password;
  private List<String> List;
  /*
   * 1.使用構造注入
   * 1.1提供所有帶參數的有參構造方法
   */
  public User(String username,Integer password,List<String> List){
    super();
    this.username = username;
    this.password = password;
    this.List = List;
  }
  /*
   * 2.使用設值注入
   * 2.1提供默認空構造方法
   * 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()
   * 為了輸出是看到結果,重寫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.使用構造注入方式裝配User實例 -->
<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.使用設值注入裝配User實例 -->
<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 >元素用于定義構造方法的參數,子元素<Iist>來為Use r 類中對應的list集合屬性注入值。

其中<property>元素用于調用Bean實例中的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);
    //構造方式輸出結果
    System.out.println("構造方式:");
    System.out.println(applicationContext.getBean("user1"));
    //設值方式輸出結果
    System.out.println("設值方式:");
    System.out.println(applicationContext.getBean("user2"));
  }
}

Spring Bean裝載方式代碼實例解析

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 類標識為Spring 中的Bean,其寫法相當于配置文件中<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
    //調用userDao中的save()方法
    this.userDao.save();
    System.out.println("userservice...save...");
  }
  public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
  }
   
}

@Service 注解將UserServicelmpl 類標識為Spring中的Bean,這相當于配置文件中<bean id="userService" class="com.itheima.annotation.UserServicelmpl”/> 的編寫;然后使用@Resource 注解標注在屬性userDao上,這相當于配置文件中<property name="userDao" ref="userDao“/>的寫法。

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 注解標注了UserController 類,這相當于在配置文件中編寫<bean id="userControll er" class="com .itheima.annotation.UserController"/>; 然后使用了@Resource 注解標注在userService 屬性上,這相當于在配置文件中編寫<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命名空間,在配置文件中開啟相應的注釋處理器 -->
<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實例
    UserController userController = (UserController)applicationContext.getBean("userController");
    //調用UserController中的save()方法
    userController.save();
  }
}

Spring Bean裝載方式代碼實例解析

3.自動裝配

<?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屬性完成自動裝配 -->
<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 屬性,并將其屬性值設置為byName 。在默認情況下,配置文件中需要通過ref 來裝配Bean ,但設置了autowire=" byName"后,Spring 會自動尋找userServiceBean 中的屬性,并將其屬性名稱與配置文件中定義的Bean 做匹配。由于UserServicelmpl 中定義了userDao 屬'性及其setter 方法,這與配置文件中id 為userDao 的Bean 相匹配,所以Spring會自動地將id 為userDao 的Bean 裝配到id 為userService 的Bean 中。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

内黄县| 喀什市| 晋江市| 天镇县| 江川县| 太湖县| 池州市| 安达市| 西畴县| 营山县| 宁海县| 阿荣旗| 伊吾县| 哈巴河县| 大竹县| 苏尼特左旗| 岳阳县| 乾安县| 惠东县| 神木县| 张家口市| 九寨沟县| 温州市| 西峡县| 江安县| 六枝特区| 玉龙| 盘锦市| 锡林郭勒盟| 辉县市| 灵璧县| 东港市| 九台市| 深水埗区| 新和县| 凤山市| 嵩明县| 南召县| 乌拉特中旗| 罗定市| 高碑店市|