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

溫馨提示×

溫馨提示×

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

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

Spring之Bean標簽怎么使用

發布時間:2022-07-08 09:59:57 來源:億速云 閱讀:191 作者:iii 欄目:開發技術

今天小編給大家分享一下Spring之Bean標簽怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Bean標簽基本配置

用于配置對象交由Spring 來創建。 默認情況下它調用的是類中的無參構造函數,如果沒有無參構造函數則不能創建成功。

基本屬性: id:Bean實例在Spring容器中的唯一標識 class:Bean的全限定名稱

Bean標簽范圍配置

scope:指對象的作用范圍,取值如下:

取值范圍說明
singleton默認值,單例的
prototype多例的
requestWEB   項目中,Spring   創建一個   Bean   的對象,將對象存入到   request   域中
sessionWEB   項目中,Spring   創建一個   Bean   的對象,將對象存入到   session   域中
global   sessionWEB   項目中,應用在   Portlet   環境,如果沒有   Portlet   環境那么globalSession   相當于   session

1)當scope的取值為singleton時

Bean的實例化個數:1個

Bean的實例化時機:當Spring核心文件被加載時,實例化配置的Bean實例

Bean的生命周期:

對象創建:當應用加載,創建容器時,對象就被創建了

對象運行:只要容器在,對象一直活著

對象銷毀:當應用卸載,銷毀容器時,對象就被銷毀了

2)當scope的取值為prototype時

Bean的實例化個數:多個

Bean的實例化時機:當調用getBean()方法時實例化Bean

對象創建:當使用對象時,創建新的對象實例

對象運行:只要對象在使用中,就一直活著

對象銷毀:當對象長時間不用時,被 Java 的垃圾回收器回收了

Bean生命周期配置

init-method:指定類中的初始化方法名稱

destroy-method:指定類中銷毀方法名稱

Bean的依賴注入入門

①創建 UserService,UserService 內部在調用 UserDao的save() 方法

public class UserServiceImpl implements UserService {
	@Override
	public void save() {
         ApplicationContext applicationContext = new 
                 ClassPathXmlApplicationContext("applicationContext.xml");       	           UserDao userDao = (UserDao) applicationContext.getBean("userDao");	
          userDao.save();
 	}
 }

②將 UserServiceImpl 的創建權交給 Spring

<bean id="userService" class="com.zjq.service.impl.UserServiceImpl"/>

③從 Spring 容器中獲得 UserService 進行操作

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
userService.save();

Bean的依賴注入概念

依賴注入(Dependency Injection):它是 Spring 框架核心 IOC 的具體實現。

在編寫程序時,通過控制反轉,把對象的創建交給了 Spring,但是代碼中不可能出現沒有依賴的情況。

IOC 解耦只是降低他們的依賴關系,但不會消除。例如:業務層仍會調用持久層的方法。

那這種業務層和持久層的依賴關系,在使用 Spring 之后,就讓 Spring 來維護了。

簡單的說,就是坐等框架把持久層對象傳入業務層,而不用我們自己去獲取

Bean的依賴注入方式

①構造方法

創建有參構造

public class UserServiceImpl implements UserService {
@Override
public void save() {
ApplicationContext applicationContext = new 
                 ClassPathXmlApplicationContext("applicationContext.xml"); 
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");    
          userDao.save();
    }
 }

配置Spring容器調用有參構造時進行注入

<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.zjq.service.impl.UserServiceImpl">      		   	
    <constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>

②set方法

在UserServiceImpl中添加setUserDao方法

public class UserServiceImpl implements UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;  
        } 
    @Override    
    public void save() {      
   		 userDao.save();
	}
}

配置Spring容器調用set方法進行注入

<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.zjq.service.impl.UserServiceImpl">
	<property name="userDao" ref="userDao"/>
</bean>

set方法:P命名空間注入

P命名空間注入本質也是set方法注入,但比起上述的set方法注入更加方便,主要體現在配置文件中,如下:

首先,需要引入P命名空間:

xmlns:p="http://www.springframework.org/schema/p"

其次,需要修改注入方式

<bean id="userService" class="com.zjq.service.impl.UserServiceImpl" p:userDao-
 ref="userDao"/>

Bean的依賴注入的數據類型

上面的操作,都是注入的引用Bean,除了對象的引用可以注入,普通數據類型,集合等都可以在容器中進行注入。

注入數據的三種數據類型

  • 普通數據類型

  • 引用數據類型

  • 集合數據類型

其中引用數據類型,此處就不再贅述了,之前的操作都是對UserDao對象的引用進行注入的,下面將以set方法注入為例,演示普通數據類型和集合數據類型的注入。

(1)普通數據類型的注入

public class UserDaoImpl implements UserDao {
    private String company;
    private int age;
    public void setCompany(String company) {
        this.company = company;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void save() {
        System.out.println(company+"==="+age);
        System.out.println("UserDao save method running....");   
    }
}
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="company" value="huawei"></property>
    <property name="age" value="15"></property>
</bean>

(2)集合數據類型(List)的注入

public class UserDaoImpl implements UserDao {
	private List<String> strList;
	public void setStrList(List<String> strList) {
		this.strList = strList;
	}
	public void save() {
        System.out.println(strList);
        System.out.println("UserDao save method running....");
	}
}
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="strList">
        <list>
            <value>aaa</value>
            <value>bbb</value>
            <value>ccc</value>
        </list>
    </property>
</bean>

(3)集合數據類型(List)的注入

public class UserDaoImpl implements UserDao {
	private List<User> userList;
	public void setUserList(List<User> userList) {
	this.userList = userList;  
 }
public void save() {
	System.out.println(userList);
	System.out.println("UserDao save method running....");
	}
}
<bean id="u1" class="com.zjq.domain.User"/>
<bean id="u2" class="com.zjq.domain.User"/>
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="userList">
        <list>
            <bean class="com.zjq.domain.User"/>
            <bean class="com.zjq.domain.User"/>
            <ref bean="u1"/>
            <ref bean="u2"/>       
        </list>
    </property>
</bean>

(4)集合數據類型( Map<String,User> )的注入

public class UserDaoImpl implements UserDao {
    private Map<String,User> userMap;
    public void setUserMap(Map<String, User> userMap) {
    this.userMap = userMap;
    }    
public void save() {      
	System.out.println(userMap);
	System.out.println("UserDao save method running....");
	}
}
<bean id="u1" class="com.zjq.domain.User"/>
<bean id="u2" class="com.zjq.domain.User"/>
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="userMap">
        <map>            
            <entry key="user1" value-ref="u1"/>
            <entry key="user2" value-ref="u2"/>
        </map>
    </property>
</bean>

(5)集合數據類型(Properties)的注入

public class UserDaoImpl implements UserDao {
    private Properties properties;
    public void setProperties(Properties properties) {
        this.properties = properties;
    }
	public void save() {
		System.out.println(properties);
		System.out.println("UserDao save method running....");
	}
}
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="properties">
        <props>
            <prop key="p1">aaa</prop>
            <prop key="p2">bbb</prop> 
            <prop key="p3">ccc</prop>
        </props>
    </property>
</bean>

引入其他配置文件(分模塊開發)

實際開發中,Spring的配置內容非常多,這就導致Spring配置很繁雜且體積很大,所以,可以將部分配置拆解到其他配置文件中,而在Spring主配置文件通過import標簽進行加載

<import resource="applicationContext-xxx.xml"/>

以上就是“Spring之Bean標簽怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

沂水县| 吉隆县| 舒城县| 松桃| 望都县| 宁国市| 乐安县| 德化县| 四子王旗| 板桥市| 阳山县| 黄冈市| 济南市| 高邮市| 荔波县| 武夷山市| 都匀市| 保德县| 宁德市| 仙桃市| 德令哈市| 平定县| 凉城县| 沧州市| 慈溪市| 三明市| 厦门市| 当涂县| 齐齐哈尔市| 青浦区| 墨玉县| 南宁市| 灌云县| 伊宁市| 治县。| 平阳县| 隆德县| 寻乌县| 藁城市| 炉霍县| 鹰潭市|