第二篇给类中的属性赋值(1)
昨天算是开启了第一篇技术类的文章,第一篇就说Spring,有同学会问框架那么多为什么要说它呢?嘿!Spring门类的框架在同类型的框架里面可以说是最优秀的,目前各公司不论大小(除非是特别牛逼的自己写框架)基本上所有的新项目都在围绕着Spring全家桶转圈。它之所以优秀就在于它在很大限度上解决了代码过于冗余,以及耦合度高的问题,不论是盛极一时的SSH框架还是火遍所有互联网公司的SSM框架都少不了他的身影,当下又火起来的Spring Boot亦是基于Spring技术发展起来,所以,如果你想在java这条路上走的更远更深更久,那么我还是建议你深入的学习一下Spring框架。废话不说,下面是今天整理的干货。各位看官,看完觉得好还望您点个赞。
本文章是博主原创,转载需注明出处。
1、setter注入
即依赖set方法注入值
xml文件的配置
<bean id="star" class="com.zct.Star">
<property name="age" value="56"/>
<property name="name" value="刘德华"/>
</bean>
对应的类文件Star.java
private int age; private String name; public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; }
2、构造注入
即依赖构造器注入
xml文件
<!-- 构造注入 --> <bean id="star1" class="com.zct.Star"> <constructor-arg index="0" value="54"/> <constructor-arg index="1" value="黎明"/> </bean> <!-- 需注意基本类型与封装类不能直接转换 --> <bean id="star2" class="com.zct.Star"> <constructor-arg type="int" value="53"/> <constructor-arg type="String" value="郭富城"/> </bean>
对应的类文件Star.java
private int age; private String name; public Star(int age, String name) { super(); this.age = age; this.name = name; }
无论是setter注入还是构造注入都是注入也就是给属性赋值,注入的英文缩写是DI(Dependency Injection)。除了从注入方式上的差异还有注入的值的区分:基本类型、引用类型。
基本类型较为简单,即是上面所书写的方式,下面为是引用类型的注入
3、引用类型的注入
引用类型的注入一也有两中方式,一是用ref引入二是用内部<bean>标签
①、ref属性引入
xml文件:
<!-- 基本类型 --> <bean id="star" class="com.zct.Star"> <constructor-arg type="int" value="53"/> <constructor-arg type="String" value="刘德华"/> </bean> <!-- 非基本类型 --> <bean id="man" class="com.zct.Man"> <property name="star" ref="star"/> <property name="liYou" value="能歌善舞长得又帅"/> </bean>
对应的类文件
Star.java
private int age; private String name; public Star(int age, String name) { super(); this.age = age; this.name = name; } public void show() { System.out.println("我是" + name + "年龄" + age); }
Man.java
private Star star; private String liYou; public void setStar(Star star) { this.star = star; } public void setLiYou(String liYou) { this.liYou = liYou; } public void showLove() { System.out.println("我喜欢的明星是:"); star.show(); System.out.println("理由是:" + liYou); }
②内部<bena>标签
<bean id="man" class="com.zct.Man"> <property name="love"> <bean id="love" class="com.zct.Love"> //内部<bean>的id可以省略 <property name="view" value="吃喝"/> <property name="play" value="玩乐"/> </bean> </property> <property name="age" value="25"></property> </bean>