91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Spring中Bean的裝配方法是什么

發布時間:2021-06-30 16:51:55 來源:億速云 閱讀:124 作者:chen 欄目:大數據

本篇內容主要講解“Spring中Bean的裝配方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring中Bean的裝配方法是什么”吧!

前言

       Bean的裝配可以理解為依賴關系注入,Bean的裝配方式即Bean依賴注入的方式。Spring容器支持多種形式的Bean的裝配方式,如基于XML的裝配、基于注解(Annotation)的裝配和自動裝配(其中最常用的是基于注解的裝配),本文章將主要講解著三種裝配方式的使用。

基于XML的裝配

方式一:設置注入

條件:①Bean類必須有一個無參構造方法;②Bean類必須為屬性提供setter方法。

在配置文件中,使用<property>元素來為每個屬性注入值

方式二:構造注入

條件:Bean類必須提供有參構造方法

在配置文件中,使用<constructor-arg>元素來為參數注入值

具體實現步驟如下

  1. 創建Java類User,提供有參、無參構造方法以及屬性setter方法;

package com.ssm.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() {
        super();
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setPassword(Integer password) {
        this.password = password;
    }
    public void setList(List<string> list) {
        this.list = list;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password +
                ", list=" + list + "]";
    }
}
  1. 創建Spring配置文件beans1.xml,使用以上兩種方式裝配Bean;

<!--?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-4.3.xsd">
  
    <!--1.使用構造注入方式裝配User實例 -->
    <bean id="user1" class="com.ssm.assemble.User">
        <constructor-arg index="0" value="小紅" />
        <constructor-arg index="1" value="987654" />
        <constructor-arg index="2">
            <list>
                <value>"constructorvalue1"</value>
                <value>"constructorvalue2"</value>
            </list>
        </constructor-arg>
    </bean>
  
    <!--2.使用設值注入方式裝配User實例 -->
    <bean id="user2" class="com.ssm.assemble.User">
        <property name="username" value="小明"></property>
        <property name="password" value="123456"></property>
        <!-- 注入list集合 -->
        <property name="list">
            <list>
                <value>"setlistvalue1"</value>
                <value>"setlistvalue2"</value>
            </list>
        </property>
    </bean>
</beans>
  1. 創建測試類XmlBeanAssembleTest,測試程序;

package com.ssm.assemble;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class XmlBeanAssembleTest {
    public static void main(String[] args) {
        // 定義配置文件路徑
        String xmlPath = "beans1.xml";
        // 加載配置文件
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
        // 構造方式輸出結果
        System.out.println(applicationContext.getBean("user1"));
        // 設值方式輸出結果
        System.out.println(applicationContext.getBean("user2"));
    }
}
  1. 運行效果。

    Spring中Bean的裝配方法是什么

基于注解的裝配

  由于基于XML的裝配可能會導致XML配置文件過于臃腫,給后續的維護和升級帶來一定的困難。因此,Spring提供了對Annotation(注解)技術的全面支持。

Spring中Bean的裝配方法是什么

具體實現步驟如下

  1. 創建數據訪問(Dao)層接口UserDao;

package com.ssm.annotation;

public interface UserDao {
    public void save();
}
  1. 創建數據訪問(UserDao)層接口的實現類UserDaoImpl,并且在實現類前添加對應的注解@Repository("userDao");

package com.ssm.annotation;
import org.springframework.stereotype.Repository;

@Repository("userDao")
//@Repository("userDao")相當于配置文件中的:<bean id="userDao" class="com.ssm.annotation.UserDaoImpl" />

public class UserDaoImpl implements UserDao{
    @Override
    public void save() {
        System.out.println("userdao...save...");
    }
}
  1. 創建業務(Service)層接口UserService;

package com.ssm.annotation;

public interface UserService {
    public void save();
}
  1. 創建業務(Service)層接口的實現類UserServiceImpl并添加屬性對象UserDao的setter方法,并在實現類前添加對應的注解@Service("userService")和在類里面方法前添加對應的注解 @Resource(name="userDao");

package com.ssm.annotation;

import javax.annotation.Resource;
import org.springframework.stereotype.Service;

@Service("userService")
//相當于配置文件中的:<bean id="userService" class="com.ssm.annotation.UserServiceImpl" />

public class UserServiceImpl implements UserService{
    @Resource(name="userDao")
    //當于配置文件中的:<property name="userDao" ref="userDao" />

    private UserDao userDao; 
    public void save() {
        //調用userDao中的save方法
        this.userDao.save();
        System.out.println("userservice....save...");
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
}
  1. 創建控制(Controller)層Java類UserController,并在實現類前添加對應的注解@Controller("userController")和在類里面方法前添加對應的注解 @Resource(name="userService");

package com.ssm.annotation;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;

@Controller("userController")
//相當于配置文件中的:<bean id="userController" class="com.ssm.annotation.UserController" />

public class UserController {
    @Resource(name="userService")
    //當于配置文件中的:<property name="userService" ref="userService" />

    private UserService userService;
    public void save(){
        this.userService.save();
        System.out.println("userController...save...");
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }
}
  1. 創建Spring配置文件beans2.xml,開啟注解和定義Bean;

<!--?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:annotation-config />
    <!--使用 context 命名空間 ,通知Spring掃描指定包下所有Bean類,進行注解解析-->
    <context:component-scan base-package="com.ssm.annotation" />
</beans>
  1. 創建測試類AnnotationAssembleTest,測試程序;

package com.ssm.annotation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AnnotationAssembleTest {
    public static void main(String[] args) {
        // 定義配置文件路徑
        String xmlPath = "beans2.xml";
        // 加載配置文件
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
        // 獲取UserController實例
        UserController userController = (UserController) applicationContext.getBean("userController");
        // 調用UserController中的save()方法
        userController.save();
    }
}
  1. 運行效果。

    Spring中Bean的裝配方法是什么

自動裝配

       所謂自動裝配,就是將一個Bean自動的注入到到其他Bean的Property中。 Spring的<bean>元素中包含一個autowire屬性,我們可以通過設置autowire的屬性值來自動裝配Bean。autowire屬性有5個值,其值及說明下表所示: Spring中Bean的裝配方法是什么

具體實現步驟如下

這里只需要在基于注解的裝配配置文件(beans.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" 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:annotation-config />-->
   <!--&lt;!&ndash;分別定義3個Bean實例  &ndash;&gt;-->
   <!--<bean id="userDao" class="com.ssm.annotation.UserDaoImpl" />-->
   <!--<bean id="userService" class="com.ssm.annotation.UserServiceImpl" />-->
   <!--<bean id="userController" class="com.ssm.annotation.UserController" />-->
   <!--&lt;!&ndash;使用 context 命名空間 ,通知Spring掃描指定包下所有Bean類,進行注解解析&ndash;&gt;-->
   <!--<context:component-scan base-package="com.ssm.annotation" />-->

   <!-- 使用bean元素的autowire屬性完成自動裝配 -->
   <bean id="userDao" class="com.ssm.annotation.UserDaoImpl" />
   <bean id="userService" class="com.ssm.annotation.UserServiceImpl" autowire="byName" />
   <bean id="userController" class="com.ssm.annotation.UserController" autowire="byName" />

</beans>

運行效果和基于注解的裝配一樣

到此,相信大家對“Spring中Bean的裝配方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

辽阳县| 留坝县| 汤阴县| 四川省| 通州市| 信阳市| 称多县| 离岛区| 石林| 滦南县| 南宫市| 凯里市| 江西省| 祁门县| 皋兰县| 贵南县| 榆树市| 秦安县| 镶黄旗| 囊谦县| 鹤峰县| 越西县| 麦盖提县| 长汀县| 从江县| 乌海市| 福州市| 绥阳县| 安宁市| 那曲县| 民勤县| 盐津县| 永靖县| 贡觉县| 白玉县| 乌恰县| 迭部县| 当雄县| 揭东县| 舒城县| 探索|