当前位置: 首页 > news >正文

网站建设行业的趋势/宁波谷歌seo推广

网站建设行业的趋势,宁波谷歌seo推广,石家庄做网站网络公司,机械设备网络推广方案装配SpringBean,我理解的意思就在容器中定义一个bean,然后让容器通过某种方式找到它。因为在Spring中一切皆资源,资源就是所谓的bean,我们怎么才能从容器中获取这些资源呢?那就是控制反转Ioc(Inversion of …

装配SpringBean,我理解的意思就在容器中定义一个bean,然后让容器通过某种方式找到它。因为在Spring中一切皆资源,资源就是所谓的bean,我们怎么才能从容器中获取这些资源呢?那就是控制反转Ioc(Inversion of Control)虽然我们不需要知道容器是怎么帮我们创建这些bean的,但最起码我们要告诉容器我们需要的是一个什么样的bean吧,所以告诉的过程就是我们装配的过程。spring中有两种装配方式:

  • XML方式
  • 注解方式

这篇文章主要介绍XML的装配方式

一般我们都是装配自定义的bean,也就是把我们自定义的类装配到ioc容器中,但是类的成员变量有很多种,比如基本类型、引用类型、集合类型及集合元素的不同类型等,下面根据不同的情况举例说明。

一、成员变量是基本类型的装配

第一步:创建一个类 

 1 public class CoderCard {
 2 
 3     private String id;
 4 
 5     private String cardNotes;
 6 
 7     private String coderId;
 8 
 9     public String getId() {
10         return id;
11     }
12 
13     public void setId(String id) {
14         this.id = id == null ? null : id.trim();
15     }
16 
17     public String getCardNotes() {
18         return cardNotes;
19     }
20 
21     public void setCardNotes(String cardNotes) {
22         this.cardNotes = cardNotes == null ? null : cardNotes.trim();
23     }
24 
25     public String getCoderId() {
26         return coderId;
27     }
28 
29     public void setCoderId(String coderId) {
30         this.coderId = coderId == null ? null : coderId.trim();
31     }
32 }

第二步:在XML总配置这个bean

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         http://www.springframework.org/schema/beans/spring-beans.xsd">
 6         <--该bean的属性都是基本类型,并可以定义属性值-->
 7     <bean id="coderCard" class="com.hyc.pojo.CoderCard">
 8         <property name="id" value="1"></property>
 9         <property name="cardNotes" value="张三的工牌"></property>
10         <property name="coderId" value="1"></property>
11     </bean>
12 </beans>

通过上面两步就完成了基本类型的装配。

二、成员变量是引用类型的装配

假设有一个程序员Coder类,它除了一些基本类型的成员变量之外,还有有一个引用类型成员变量是工牌CoderCard, 所以我需要定义两个类并在配置文件中装配。

第一步:创建Coder.java

 1 public class Coder {
 2     
 3     private String id;
 4 
 5     private String coderName;
 6 
 7     private Integer coderAge;
 8 
 9     private Integer coderSalary;
10 
11     private CoderCard coderCard;
12 
13 
14     public String getId() {
15         return id;
16     }
17 
18     public void setId(String id) {
19         this.id = id == null ? null : id.trim();
20     }
21 
22     public String getCoderName() {
23         return coderName;
24     }
25 
26     public void setCoderName(String coderName) {
27         this.coderName = coderName == null ? null : coderName.trim();
28     }
29 
30     public Integer getCoderAge() {
31         return coderAge;
32     }
33 
34     public void setCoderAge(Integer coderAge) {
35         this.coderAge = coderAge;
36     }
37 
38     public Integer getCoderSalary() {
39         return coderSalary;
40     }
41 
42     public void setCoderSalary(Integer coderSalary) {
43         this.coderSalary = coderSalary;
44     }
45 
46     public CoderCard getCoderCard() {
47         return coderCard;
48     }
49 }

第二步:创建CoderCard.java(上面已经定义过了)

 1 public class CoderCard {
 2     
 3     private String id;
 4 
 5     private String cardNotes;
 6 
 7     private String coderId;
 8 
 9     public String getId() {
10         return id;
11     }
12 
13     public void setId(String id) {
14         this.id = id == null ? null : id.trim();
15     }
16 
17     public String getCardNotes() {
18         return cardNotes;
19     }
20 
21     public void setCardNotes(String cardNotes) {
22         this.cardNotes = cardNotes == null ? null : cardNotes.trim();
23     }
24 
25     public String getCoderId() {
26         return coderId;
27     }
28 
29     public void setCoderId(String coderId) {
30         this.coderId = coderId == null ? null : coderId.trim();
31     }
32

第三步:在XML中配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         http://www.springframework.org/schema/beans/spring-beans.xsd">
 6 
 7 
 8     <bean id="coder" class="com.hyc.pojo.Coder">
 9         <!-- 装配简易值 -->
10         <property name="id" value="1"></property>
11         <property name="coderName" value="张三"></property>
12         <property name="coderAge" value="26"></property>
13         <property name="coderSalary" value="10000"></property>
14         <!--装配对象 -->
15         <property name="coderCard" ref="coderCard"></property>
16     </bean>
17 
18     <!-- 对象作为成员变量 -->
19     <bean id="coderCard" class="com.hyc.pojo.CoderCard">
20         <property name="id" value="1"></property>
21         <property name="cardNotes" value="张三的工牌"></property>
22         <property name="coderId" value="1"></property>
23     </bean>
24 </beans>

装配引用类型的变量时,有两个关键点:

1⃣️引用变量通过属性ref指向一个bean

2⃣️定义ref所指的bean,其中ref的值就是bean的id

三、成员变量是集合类型的装配

 成员变量是集合的时候,还要区分该集合中的元素类型,也分为基本数据类型和引用类型两种。

1⃣️集合元素是基本数据类型

第一步:定义一个包含各种集合类型的类,集合元素都为基本数据类型

 1 public class Coder {
 2 
 3     // 集合元素是基本类型
 4     private List<String> coderBugList;
 5 
 6     private Map<String, String> coderBugMap;
 7 
 8     private Set<String> coderBugSet;
 9 
10     private String[] coderBugArray;
11 
12     public List<String> getCoderBugList() {
13         return coderBugList;
14     }
15 
16     public void setCoderBugList(List<String> coderBugList) {
17         this.coderBugList = coderBugList;
18     }
19 
20     public Map<String, String> getCoderBugMap() {
21         return coderBugMap;
22     }
23 
24     public void setCoderBugMap(Map<String, String> coderBugMap) {
25         this.coderBugMap = coderBugMap;
26     }
27 
28     public Set<String> getCoderBugSet() {
29         return coderBugSet;
30     }
31 
32     public void setCoderBugSet(Set<String> coderBugSet) {
33         this.coderBugSet = coderBugSet;
34     }
35

在上面的类中定义了List、Map、Set和数组四种集合类型,并且它们的元素都是String,下面在XML中装配

第二步:在XML中配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         http://www.springframework.org/schema/beans/spring-beans.xsd">
 6 
 7 
 8     <bean id="coder" class="com.hyc.pojo.Coder">
 9         <!-- 装配集合,集合元素是基本类型 -->
10         <!-- 基本类型-装配List -->
11         <property name="coderBugList">
12             <list>
13                 <value>bug-list-1</value>
14                 <value>bug-list-2</value>
15                 <value>bug-list-3</value>
16             </list>
17         </property>
18 
19         <!-- 基本类型-装配Map -->
20         <property name="coderBugMap">
21             <map>
22                 <entry key="bug1" value="bug-map-1" />
23                 <entry key="bug2" value="bug-map-2" />
24                 <entry key="bug3" value="bug-map-3" />
25             </map>
26         </property>
27 
28         <!-- 基本类型-装配Set -->
29         <property name="coderBugSet">
30             <set>
31                 <value>bug-set-1</value>
32                 <value>bug-set-2</value>
33                 <value>bug-set-3</value>
34             </set>
35         </property>
36 
37         <!-- 基本类型-装配Array -->
38         <property name="coderBugArray">
39             <array>
40                 <value>bug-array-1</value>
41                 <value>bug-array-2</value>
42                 <value>bug-array-3</value>
43             </array>
44         </property>
45 </beans>

2⃣️集合元素是引用类型

当集合元素是引用类型是,首先要定义引用类。假设一个程序员类Coder.java中有多个集合,它们的元素类型是项目类CoderProject.java,其中集合map的key设置为上面的CoderCard.java,所以这里不再重定义,只要定义CoderProject.java即可。

第一步:定义引用类型

 1 public class CoderProject {
 2     private String id;
 3 
 4     private String projectName;
 5 
 6     private String projectVersion;
 7 
 8     private String projectDesc;
 9 
10     public String getId() {
11         return id;
12     }
13 
14     public void setId(String id) {
15         this.id = id == null ? null : id.trim();
16     }
17 
18     public String getProjectName() {
19         return projectName;
20     }
21 
22     public void setProjectName(String projectName) {
23         this.projectName = projectName == null ? null : projectName.trim();
24     }
25 
26     public String getProjectVersion() {
27         return projectVersion;
28     }
29 
30     public void setProjectVersion(String projectVersion) {
31         this.projectVersion = projectVersion == null ? null : projectVersion.trim();
32     }
33 
34     public String getProjectDesc() {
35         return projectDesc;
36     }
37 
38     public void setProjectDesc(String projectDesc) {
39         this.projectDesc = projectDesc == null ? null : projectDesc.trim();
40     }
41

第二步:定义一个包含各种集合类型的类,集合元素都为引用类型

 1 public class Coder {
 2 
 3     // 集合元素是引用类型
 4     private List<CoderProject> coderProjectList;
 5 
 6     private Map<CoderCard, CoderProject> coderProjectMap;
 7 
 8     private Set<CoderProject> coderProjectSet;
 9 
10     private CoderProject[] coderProjectArray;
11 
12     public List<CoderProject> getCoderProjectList() {
13         return coderProjectList;
14     }
15 
16     public void setCoderProjectList(List<CoderProject> coderProjectList) {
17         this.coderProjectList = coderProjectList;
18     }
19 
20     public Map<CoderCard, CoderProject> getCoderProjectMap() {
21         return coderProjectMap;
22     }
23 
24     public void setCoderProjectMap(Map<CoderCard, CoderProject> coderProjectMap) {
25         this.coderProjectMap = coderProjectMap;
26     }
27 
28     public Set<CoderProject> getCoderProjectSet() {
29         return coderProjectSet;
30     }
31 
32     public void setCoderProjectSet(Set<CoderProject> coderProjectSet) {
33         this.coderProjectSet = coderProjectSet;
34     }
35 
36     public CoderProject[] getCoderProjectArray() {
37         return coderProjectArray;
38     }
39 
40     public void setCoderProjectArray(CoderProject[] coderProjectArray) {
41         this.coderProjectArray = coderProjectArray;
42     }
43 }

第三步:在XML中装配

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         http://www.springframework.org/schema/beans/spring-beans.xsd">
 6 
 7 
 8     <bean id="coder" class="com.hyc.pojo.Coder">
 9 
10         <!-- 装配集合,集合元素是引用类型 -->
11         <!-- 引用类型-装配List -->
12         <property name="coderProjectList">
13             <list>
14                 <ref bean="coderProject1"/>
15                 <ref bean="coderProject2"/>
16             </list>
17         </property>
18         <!-- 引用类型-装配Map -->
19         <property name="coderProjectMap">
20             <map>
21                 <entry key-ref="coderCard1" value-ref="coderProject1" />
22                 <entry key-ref="coderCard2" value-ref="coderProject2" />
23             </map>
24         </property>
25         <!-- 引用类型-装配Set -->
26         <property name="coderProjectSet">
27             <set>
28                 <ref bean="coderProject1"/>
29                 <ref bean="coderProject2"/>
30             </set>
31         </property>
32         <!-- 引用类型-装配Array -->
33         <property name="coderProjectArray">
34             <array>
35                 <ref bean="coderProject1"/>
36                 <ref bean="coderProject2"/>
37             </array>
38         </property>
39     </bean>
40 
41     <!-- 装配引用变量 -->
42     <bean id="coderCard1" class="com.hyc.pojo.CoderCard">
43         <property name="id" value="2"></property>
44         <property name="cardNotes" value="李四的工牌"></property>
45         <property name="coderId" value="2"></property>
46     </bean>
47     
48     <bean id="coderCard2" class="com.hyc.pojo.CoderCard">
49         <property name="id" value="3"></property>
50         <property name="cardNotes" value="王麻子的工牌"></property>
51         <property name="coderId" value="3"></property>
52     </bean>
53     
54     <bean id="coderProject1" class="com.hyc.pojo.CoderProject">
55         <property name="id" value="1"></property>
56         <property name="projectName" value="管理系统"></property>
57         <property name="projectVersion" value="V1.0"></property>
58         <property name="projectDesc" value="管理配置"></property>
59     </bean>
60     <bean id="coderProject2" class="com.hyc.pojo.CoderProject">
61         <property name="id" value="2"></property>
62         <property name="projectName" value="存储系统"></property>
63         <property name="projectVersion" value="V1.0"></property>
64         <property name="projectDesc" value="存储配置"></property>
65     </bean>
66 </beans>

从上面两种配置方式中可以清晰看出集合装配时,因元素类型不同,装配方式略有区别。

四、成员变量是Properties的装配

第一步:创建含有Properties类型成员变量的类

 1 public class Coder {
 2 
 3     private Properties prop;
 4 
 5 
 6     public Properties getProp() {
 7         return prop;
 8     }
 9 
10     public void setProp(Properties prop) {
11         this.prop = prop;
12     }
13

第二步:XML中装配

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         http://www.springframework.org/schema/beans/spring-beans.xsd">
 6 
 7 
 8     <bean id="coder" class="com.hyc.pojo.Coder">
 9         
10         <!-- 装配Properties -->
11         <property name="prop">
12             <props>
13                 <prop key="bug-key-1">bug-prop-1</prop>
14                 <prop key="bug-key-2">bug-prop-2</prop>
15                 <prop key="bug-key-3">bug-prop-3</prop>
16             </props>
17         </property>
18 </beans>

五、通过命名空间装配

除了上述配置之外,Spring还提供了对应命名空间的定义,只是在使用命名空间时要先引入对应的命名空间和XML模式文件XSD。

 直接来看以下XML配置吧,其实根据XML配置我们就能推断出该建哪些类。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:c="http://www.springframework.org/schema/c" 
xmlns:p="http://www.springframework.org/schema/p"xmlns:util="http://www.springframework.org/schema/util"

xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util.xsd"> <!-- 使用构造函数注入 :c代表是构造函数(constructor)_i是构造函数中的参数下标,从0开始 --><bean id="coderProject1" class="com.hyc.pojo.CoderProject" c:_0="1"c:_1="项目1" c:_2="1.0" c:_3="使用构造函数注入" /><!-- 使用setter方式注入: p是属性即成员变量(set)通过冒号:属性名的方式初始化成员变量的值 --><bean id="coderProject2" class="com.hyc.pojo.CoderProject" p:id="1"p:projectName="项目1" c:projectVersion="1.0" c:projectDesc="使用setter注入" /><!--成员变量包含引用类型及集合的时候 --><bean id="coder1" class="com.hyc.pojo.Coder" p:id="1" p:coderName="小张"p:coderAge="23" p:coderSalary="20000" p:coderCard-ref="coderCard"p:list-ref="list" p:map-ref="map" p:set-ref="set" /><!-- 定义引用变量coderCard --><bean id="1" p:id="1" p:cardNotes="小张的工牌" p:coderId="1" /><!-- 定义集合变量list --><util:list id="list"><ref bean="coderProject1" /><ref bean="coderProject2" /></util:list><!-- 定义集合变量map --><util:map id="map"><entry key="project1" value-ref="coderProject1" /><entry key="project2" value-ref="coderProject2" /></util:map><!-- 定义集合变量set --><util:set id="set"><ref bean="coderProject1" /><ref bean="coderProject2" /></util:set> </beans>

上面的配置中,加粗的黑体部分是需要引入的命名空间和XML的模式文件XSD:

xmlns:c="http://www.springframework.org/schema/c通过构造函数注入所需
xmlns:p="http://www.springframework.org/schema/p通过setter方法注入所需
xmlns:util="http://www.springframework.org/schema/util为了注入集合类型所需

以上就是XML方式装配的例子,看代码就知道怎么回事了。完成了装配,我们怎么通过容器获取呢?Spring IoC容器的设计主要是基于BeanFactory和ApplicationContext两个接口,其中ApplicationContext是BeanFactory的子接口之一,它对BeanFactory进行了扩展,所以大多数情况下使用ApplicationContext作为Spring IoC容器,而通过XML方式装配的bean是通过ApplicationContext的一个类ClassPathXmlApplicationContext来实现的。

首先:实例化一个ClassPathXmlApplicationContext对象,参数为装配bean的spring配置文件

1 String xmlPath = "classpath*:spring-bean.xml";
2 ClassPathXmlApplicationContext     context = new ClassPathXmlApplicationContext(xmlPath);

然后:通过它的getBean方法来获取bean实例

1 Coder coder = (Coder) context.getBean("coder");

getBean的方法有很多,可以传入bean名称、类型等不同的参数,可以看看BeanFactory和ApplicationContext接口查看,一般我们只用通过name获取的方法,其实这里的name就是我们在XML中配置的bean属性id。

以上就是对XML方式装配bean的介绍,下一篇会举一个实例进行测试,因为代码较多,考虑到文章太长让人看着容易疲劳,我决定单独写一篇来记录。 

转载于:https://www.cnblogs.com/hellowhy/p/9711670.html

http://www.lbrq.cn/news/953209.html

相关文章:

  • 住房建设部官方网站设计费计取/广州网络推广服务商
  • 斗图制作器/抖音搜索seo
  • 动态网站建设实训心得/网站自助建站系统
  • 用qt做网站可以吗/建站工具有哪些
  • 怎样建设自己网站的后台/谷歌seo引擎优化
  • 众筹网站开发/天津疫情最新消息
  • 服饰营销型网站建设/全网关键词搜索
  • 建网站用什么浏览器/百度总部电话
  • 快手app下载安装免费下载/抖音seo排名优化公司
  • 闵行网站建设公司纸/明星百度指数在线查询
  • 手机登录网站后台/网络营销案例范文
  • 178网站建设/百度搜索收录
  • 做视频可以领钱的网站/谷歌网页版入口在线
  • 做网站的流程前端做什么/全网热搜榜第一名
  • 网站开发流程步骤 口袋/近几天的新闻摘抄
  • 智慧团建网站入口pc端/销售课程视频免费
  • 闵行区网站/百度一下你就知道官网百度
  • wordpress固定链接设置失败/网站优化员seo招聘
  • 企业工商信息查询/网站seo需要用到哪些工具
  • 怎么删除网站的死链/搜索网络如何制造
  • 网站设计制作开发/郑州网站推广优化公司
  • 越野车网站模板/百度网站认证
  • 网站开发公司云鲸互创实惠/蚌埠网络推广
  • 云南网站建设哪家权威/网络营销的定义
  • 杭州网站建设科技有限公司/百度网盘搜索引擎入口
  • 小米路由器3做网站/免费手游推广平台
  • 电商网站更适合/新闻最新消息
  • 网站开发方向和移动开发方向那个好/推广公司
  • 做新闻类网站还有市场吗/媒体吧软文平台
  • 镇江个人网站制作/seo的全称是什么
  • Kubernetes (K8S)知识详解
  • 标准文件和系统文件I/O
  • STM32 RTOS 开发基础:从任务管理到同步机制的全面解析
  • RAG深入了解P1:从RAG类型出发看优化点
  • 集群聊天服务器各个类进行详解
  • 使用YOLOv11实现水果类别检测:从数据到模型训练的全过程