Spring学习笔记(三) 实验二——实验四

junit是什么

xUnit是一套基于测试驱动开发的测试框架
其中的断言机制:将程序预期的结果与程序运行的最终结果进行比对,确保对结果的可预知性

Helloworld存在的几个问题

src源码包开始的路径,
source folder源码文件夹
所有源码包都会合并放在类路径
folder

源码路径
java: /bin/
web: /WEB-INF/classes/

ApplicationContest ioc容器
ClassPathXMLApplicationContext: xml配置文件在类路径下
FileSystemXmlApplicationContext:xml配置文件在磁盘路径下

给容器注册一个组件,从容器中按照id拿到组件,自动new组件对象
容器中对象的创建在容器创建完成的时候就已经创建完成了
注册了几个对象就会new几个对象
同一个组件在ioc容器中是单实例的,是在容器启动完成之前就创建好的
xml文件中的property标签含义就是调用setter方法为javabean属性赋值
不要乱改get/set,所有的方法建议自动生成

@方法

@Test 该方法可以不用main方法就可以测试出运行结果,是一种测试方法
被测试的方法必须是public修饰的
注二:
@Override是伪代码,表示重写。(当然不写@Override也可以),不过写上有如下好处:
1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。
举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。
@Override
public void onCreate(Bundle savedInstanceState)
{…….}
这种写法是正确的,如果你写成:
@Override
public void oncreate(Bundle savedInstanceState)
{…….}
编译器会报如下错误:The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,以确保你正确重写onCreate方法(因为oncreate应该为onCreate)。
而如果你不加@Override,则编译器将不会检测出错误,而是会认为你为子类定义了一个新方法:oncreate

正确为各种属性赋值

基本类型直接使用property的value赋值,自动进行类型转换

<bean id="person03" class="com.me.bean.Person">
        <!--有参构造器赋值-->
        <constructor-arg name="lastName" value="小明"></constructor-arg>
        <constructor-arg name="email" value="[email protected]"></constructor-arg>
        <constructor-arg name="gender" value=""></constructor-arg>
        <constructor-arg name="age" value="123"></constructor-arg>
    </bean>

避免赋值的不明确重载,底层算法会产生一系列使人迷惑的行为
这个时候可以使用type来指定要赋值的参数的类型
比如:

<!--public Person(String lastName,Integer age,String gender)-->
<!--public Person(String lastName,String email,String gender)-->
<bean id="person 05" class="com.me.bean.Person" >
    <constructor-arg value="小花"></constructor-arg>
    <constructor-arg value="10" index="1" type="java.lang.Integer"></constructor-arg>
    <constructor-arg value=""></constructor-arg>
</bean>

通过p名称空间为bean赋值
xml中就接触过名称空间了,用来防止标签重复
引入p名称空间
xmlns:p=“http://www.springframework.org/schema/p”

  <bean id="person03" class="com.me.bean.Person" p:age="18" p:email="[email protected]">
        <!--p名称空间赋值-->
    </bean>

什么是Properties 类

Properties 类位于 java.util.Properties ,是Java 语言的配置文件所使用的类, Xxx.properties 为Java 语言常见的配置文件,如数据库的配
置 jdbc.properties, 系统参数配置 system.properties。 这里,讲解一下Properties 类的具体使用。
以key=value 的 键值对的形式进行存储值。 key值不能重复。
继承了Hashtable 类,以Map 的形式进行放置值, put(key,value) get(key)

复杂类型在标签中赋值

标签引用

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="car01" class="com.me.bean.Car">
        <property name="carName" value="宝马"></property>
        <property name="color" value="green"></property>
        <property name="price" value="30000000"></property>
    </bean>


    <bean id="person01" class="com.me.bean.Person">
        <property name="lastName">
            <null/>
        </property>
        <property name="car" ref="car01">
        </property>
    </bean>
</beans>

为list类型赋值

    <bean id="book01" class="com.me.bean.Book" p:bookName="东游记"></bean>
    <bean id="person02" class="com.me.bean.Person">
        <property name="books">
            <list>
                <bean id="book02" class="com.me.bean.Book" p:bookName="西游记"></bean>
                <ref bean="book01"></ref>
            </list>
        </property>
    </bean>

内部bean不能被获取到,id写和没写一样

为maps类型赋值

    <bean id="person03" class="com.me.bean.Person">
        <property name="maps">
            <map>
                <entry key="key01" value="张三"></entry>
                <entry key="key02" value="18"></entry>
                <entry key="key03" value-ref="book01"></entry>
                <entry key="key04">
                    <bean class="com.me.bean.Car" p:carName="宝马"></bean>
                </entry>
            </map>
        </property>
    </bean>

为properties类型赋值

<property name="properties">
            <props>
                <prop key="username">root</prop>
                <prop key="password">123456</prop>
            </props>
        </property>

util创建名称空间,方便别人引用

<util:map id="myMap">                             
    <entry key="key01" value="张三"></entry>        
    <entry key="key02" value="18"></entry>
    <entry key="key03" value-ref="book01"></entry>
</util:map>

级联属性赋值

级联属性:属性的属性

这几个实验在学什么?
是在学控制反转 IOC,既是学方法,其实也是在学思路。

发布了136 篇原创文章 · 获赞 14 · 访问量 5809
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章