您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Spring的存儲(chǔ)方式與獲取方式是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
使用注解的方式存儲(chǔ)業(yè)務(wù)對(duì)象到Spring中會(huì)更簡(jiǎn)單
1.配置spring.xml設(shè)置spring存入對(duì)象的根路徑 ,目的是讓Spring項(xiàng)目啟動(dòng)后,能夠去根路徑下的所有類(lèi)中掃描并標(biāo)識(shí)為需要存儲(chǔ)到Spring中的對(duì)象存儲(chǔ)到Spring中
<?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:content="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"> <!-- 配置一下:bean注解掃描的根路徑(方面后面更簡(jiǎn)單存儲(chǔ)對(duì)象到spring容器)--> <content:component-scan base-package="com.bit"></content:component-scan> </beans>
2.使用注解將bean對(duì)象存儲(chǔ)到spring框架中
注解分類(lèi):
1.類(lèi)注解:@Controller【控制器】,@Service【業(yè)務(wù)邏輯層】,@Repository【數(shù)據(jù)持久層】,@Component【組件類(lèi)】,@Configuration【配置類(lèi)】
2.方法注解:@Bean(必須配合類(lèi)注解使用)
創(chuàng)建bean對(duì)象
package com.bit; import org.springframework.stereotype.Controller; /** * Description: * User: lmp * Date: 2022-05-24 * Time: 19:23 */ @Controller public class UserController { public void sayHi(String name){ System.out.println("Hi controller"+name); } }
讀取bean對(duì)象
package com.bit; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Description: * User: lmp * Date: 2022-05-24 * Time: 15:25 */ public class App { public static void main(String[] args) { //先獲取對(duì)象的Spring ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); //從 Spring 中獲得存入的對(duì)象(將存入的類(lèi)首字母小寫(xiě),若類(lèi)名字符大于2個(gè),并且前兩個(gè)字符都是大寫(xiě),那么使用原類(lèi)名作為bean的名字) UserController userController = context.getBean("userController",UserController.class); userController.sayHi("Bit"); } }
和controller一樣
和controller一樣
和controller一樣
和controller一樣
一般寫(xiě)在組件里面,方法注解必須配合類(lèi)注解使用,因?yàn)镾pring默認(rèn)是類(lèi)級(jí)別的掃描
package com.bit.util; import com.bit.Model.User; import com.sun.org.apache.bcel.internal.generic.RETURN; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; /** * Description: * User: lmp * Date: 2022-05-24 * Time: 21:14 */ @Component public class UserBean { @Bean //將當(dāng)前對(duì)象存儲(chǔ)在Spring當(dāng)中 public User user1(){ User user = new User(); user.setId(1); user.setName("zhangsan"); user.setAge(18); return user; } }
可以通過(guò)設(shè)置name屬性給Bean對(duì)象進(jìn)行重命名操作
@Bean重命名可以有多個(gè)別名,但是當(dāng)指定別名之后,方法名就取不到對(duì)象了
package com.bit.util; import com.bit.Model.User; import com.sun.org.apache.bcel.internal.generic.RETURN; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; /** * Description: * User: lmp * Date: 2022-05-24 * Time: 21:14 */ @Component public class UserBean { @Bean(name = {"u1","userInfo1"}) //將當(dāng)前對(duì)象存儲(chǔ)在Spring當(dāng)中 public User user1(){ User user = new User(); user.setId(1); user.setName("zhangsan"); user.setAge(18); return user; } @Bean(name = "u2") //將當(dāng)前對(duì)象存儲(chǔ)在Spring當(dāng)中 public User user2(){ User user = new User(); user.setId(1); user.setName("lisi"); user.setAge(18); return user; } }
從業(yè)務(wù)邏輯來(lái)說(shuō),@Controller是@Component的子類(lèi),同樣,@Service,@Repository,@Configuration都是@Component的子類(lèi)
屬性注入(屬性注冊(cè))
Setter注入
構(gòu)造方法注入
@Qualifier 可以解決同一個(gè)類(lèi)有兩個(gè)以上的對(duì)象的情況,可以使用這個(gè)注解,它相當(dāng)于@Resource(name=“”)
屬性注入的優(yōu)點(diǎn)是簡(jiǎn)潔,只適用于IoC容器,如果非IOC容器不可用,會(huì)報(bào)空指針異常
構(gòu)造方法注入是Spring推薦的注入方式,缺點(diǎn)是如果有多個(gè)注入會(huì)顯得比較臃腫
Setter方式是Spring前期版本推薦的注入方式,但通用性不如構(gòu)造方法,
對(duì)象注入的另一種方式:使用@Resource注解,但Resource注解不能使用在構(gòu)造方法上
1.出身不同,他們所屬的包不一樣,Resource屬于javajdk中的javax包中,而Autowired屬于springframework包中的
2.作用范圍不同,Resource不可以使用在構(gòu)造方法注解上,而autowired可以
3.功能不同 Resource可以使用name屬性,從而完成對(duì)象的別名注入,而autowired沒(méi)有。
“Spring的存儲(chǔ)方式與獲取方式是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。