Java Reference
In-Depth Information
public void checkout(ShoppingCart cart) throws IOException {
double total = 0;
for (Product product : cart.getItems()) {
total += product.getPrice();
}
writer.write(new Date() + "\t" + total + "\r\n");
writer.flush();
}
public void closeFile() throws IOException {
writer.close();
}
}
In the
Cashier
class, the
openFile()
method opens the text file with the cashier name as the file
name in the specified system path. Each time you call the
checkout()
method, a checkout record will be
appended to the text file. Finally, the
closeFile()
method closes the file to release its system resources.
Then you declare a cashier bean with the name
cashier1
in the IoC container. This cashier's
checkout records will be recorded in the file
c:/cashier/cashier1.txt
. You should create this directory
in advance or specify another existing directory. (On a Unix derivative, you might put it in your home
directory:
~/cashier
.)
<beans ...>
...
<bean id="cashier1" class="com.apress.springenterpriserecipes.shop.Cashier">
<property name="name" value="cashier1" />
<property name="path" value="c:/cashier" />
</bean>
</beans>
However, in the
Main
class, if you try to check out a shopping cart with this cashier, it will result in a
NullPointerException
. The reason for this exception is that no one has called the
openFile()
method for
initialization beforehand.
package com.apress.springenterpriserecipes.shop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Main {
public static void main(String[] args)
throws Exception {
// checkout() throws an Exception
ApplicationContext context =
new FileSystemXmlApplicationContext("beans.xml");
...
Cashier cashier1 = (Cashier) context.getBean("cashier1");
cashier1.checkout(cart1);
}
}
Search WWH ::
Custom Search