电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺談Spring Bean的基本配置

瀏覽:53日期:2022-08-13 09:37:57
一、Spring中set方法的注入

User實體

@Data//lombok提供的有參構造@AllArgsConstructorlombok提供的無參構造@NoArgsConstructorpublic class User { private int id; private String name; private int age; private String sex; private String birthday;}

beanFactory.xml

<bean class='edu.xalead.User'><property name='id' value='1806'/><property name='name'> <value>張三</value></property><property name='sex' value='男'/><property name='age' value='18'/><property name='birthday' value='2000-1-1'/> </bean>1.1 set的兩種注入方法

我們在xml文件中注入的時候我們可以寫成這樣:

<property name='id' value='1806'/>

也可以寫成這樣:

<property name='id'> <value>1806</value></property>

這沒什么區別的,不過我們一般使用前者,畢竟看起來代碼少,也方便

代碼測試:

@Test public void test3(){//創建工廠BeanFactory beanFactory = new ClassPathXmlApplicationContext('beanFactory.xml');//從工廠中拿配置好的UserServlet實例User user = beanFactory.getBean(User.class);System.out.println(user); }

淺談Spring Bean的基本配置

1.2 type屬性

有事我們在注入的時候有時候會看到type:

<property name='id'> <value type='int'>1806</value></property>

這相當于一個類型聲明,聲明value是什么類型的數據,然后調用類型轉換器將我們寫入的字符串轉換為我們我們所定義的類型。但其實這是一個多余的,當我們注入的時候,會通過User對象進行反射從而知道是什么類型。

1.3 Date()類型的注入

但有一些特殊的類型是Spring所沒有的,需要我們自己去定義,就比如Date類型,如果我們這樣寫就會報錯

private Date birthday;

<property name='birthday' value='2000-1-1'/>

淺談Spring Bean的基本配置

Spring是沒有這個的轉換器,將字符串轉換為Date類型,所以其實我們可以直接用String來寫,或者new Date(),但是后者約束性太大,不能得到我們想要的日期,還是前者方便。

二、Spring_scop

當我們在測試案例中創建兩個User實例時,進行檢查發現,這兩個實例其實是一個

BeanFactory beanFactory = new ClassPathXmlApplicationContext('beanFactory.xml');//從工廠中拿配置好的UserServlet實例User user = beanFactory.getBean(User.class);User user1 = beanFactory.getBean(User.class);System.out.println(user == user1);

淺談Spring Bean的基本配置

如果我們要創建多例模式,就要使用到屬性scope

scope屬性有兩個值:

1.singleton(默認情況下,即單例模式)

2.prototype(多例模式)

<bean scope='prototype'>

我們在進行測試答案為false

三、自動注入(autowire)

我們在userServlet中注入userDao

<bean class='edu.xalead.UserDao'></bean><bean class='edu.xalead.UserServlet'> <property name='userDao' ref='userDao'/></bean>

但其實我們沒必要這樣寫,Bean中you自動注入的屬性autowire,他有兩個值:

1.byName,根據名字注入,即id=“userDao”

<bean class='edu.xalead.UserDao'></bean><bean autowire='byName'/>

2.byType,根據類型注入,類型注入比較有局限性,同種類型只能注入一個,多了會報不是唯一錯誤

<bean class='edu.xalead.UserDao'></bean><bean autowire='byType'>四、構造注入

<!-- User有個四參構造,我們通過constructor-arg一個一個對應構造參數進行值的注入 --><bean class='edu.xalead.User'> <constructor-arg value='1111'/> <constructor-arg value='zhangsan'/> <constructor-arg value='20'/> <constructor-arg value='M'/></bean>

構造注入和set注入的不同點就是,加入元素的順序必須和你所創建的實體(User)類相同,若不同,則會報錯,由于反射過來的類型和轉換器轉換的類型不同,這時候我們需要加入另一個屬性index

<!-- User有個四參構造,我們通過constructor-arg一個一個對應構造參數進行值的注入 --><bean class='edu.xalead.User'> <constructor-arg value='M' index='3'/> <constructor-arg value='zhangsan' index='1'/> <constructor-arg value='1111'/ index='0'> <constructor-arg value='20' index='2'/></bean>

那什么時候使用構造注入呢?當我們自己定義一個構造函數的時候使用構造注入

public class User { private int id; private String name; private int age; private String sex; private String birthday;//自定義構造函數 public User(int id , String name){this.id = id;this.name = name; }}

<bean class='edu.xalead.User'><constructor-arg value='18'/><constructor-arg value='張三'/> </bean>

這個時候就不能使用set注入,他會報錯,即使你寫出全參構造函數也不行

淺談Spring Bean的基本配置

五、Array注入(數組注入)

private String[] photos;

<property name='photos'><array> <value>1.jpg</value> <value>2.jpg</value> <value>3.jpg</value></array></property>六、List注入

private List<String> list;

<property name='list'><list> <value>a</value> <value>b</value> <value>c</value></list></property>七、Set注入

private Set<String> set;

<property name='set'><set> <value>a</value> <value>b</value> <value>c</value></set></property>八、Map注入

private Map<Integer,String> map

<property name='map'><map>//第一種寫法 <entry key='1' value='a'/> //第二種寫法 <entry key='2'> <value>b</value> </entry> <entry key='3' value='c'/> </map></property>九、Property注入

private Properties prop;

<property name='prop'> <props><prop key='4432'>42341231</prop><prop key='54353'>5464564</prop><prop key='9865'>2659846</prop> </props></property>

到此這篇關于淺談Spring Bean的基本配置的文章就介紹到這了,更多相關Spring Bean的配置內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 破碎机锤头_合金耐磨锤头_郑州宇耐机械工程技术有限公司 | 郑州爱婴幼师学校_专业幼师培训_托育师培训_幼儿教育培训学校 | 水轮机密封网 | 水轮机密封产品研发生产厂家 | 纳米二氧化硅,白炭黑,阴离子乳化剂-臻丽拾科技 | 湖州织里童装_女童男童中大童装_款式多尺码全_织里儿童网【官网】-嘉兴嘉乐网络科技有限公司 | 定制防伪标签_防伪标签印刷_防伪标签厂家-510品保防伪网 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 北京发电车出租-发电机租赁公司-柴油发电机厂家 - 北京明旺盛安机电设备有限公司 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 屏蔽服(500kv-超高压-特高压-电磁)-徐吉电气 | 球磨机 选矿球磨机 棒磨机 浮选机 分级机 选矿设备厂家 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 飞飞影视_热门电影在线观看_影视大全 | 快速门厂家-快速卷帘门-工业快速门-硬质快速门-西朗门业 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | SRRC认证|CCC认证|CTA申请_IMEI|MAC地址注册-英利检测 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | 硅胶布|电磁炉垫片|特氟龙胶带-江苏浩天复合材料有限公司 | 无机纤维喷涂棉-喷涂棉施工工程-山东华泉建筑工程有限公司▲ | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 地脚螺栓_材质_标准-永年县德联地脚螺栓厂家 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 硅PU球场、篮球场地面施工「水性、环保、弹性」硅PU材料生产厂家-广东中星体育公司 | 不锈钢酒柜|恒温酒柜|酒柜定制|酒窖定制-上海啸瑞实业有限公司 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 国标白水泥,高标号白水泥,白水泥厂家-淄博华雪建材有限公司 | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 电渗析,废酸回收,双极膜-山东天维膜技术有限公司 | 模切之家-专注服务模切行业的B2B平台! | 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 |