文章目录
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,既是学方法,其实也是在学思路。