Posts Tagged ‘java’
Spring MVC 3 @ModelAttribute Annotation Example
Monday, April 18th, 2011
Background
So, I’m working on an existing Spring 3.x web project. This project heavily favours the use of annotations over XML configuration files. As I was trawling through the source code I noticed the “@ModelAttribute” annotation (which of course I had to look up!).
If the above background seems familiar that’s because it’s the same as for a previous Spring Annotation post I made (ed: this is in danger of turning into a mini-series)
Description
Most of the following is based upon the excellent Spring Documentation. I’ve simply lifted and rewritten the parts I require to serve as an “aide-mémoire”.
The @ModelAttribute annotation serves two purposes depending on how it is used:
Tags: annotations, java, spring
Posted in Spring | 3 Comments »
Spring MVC 3.x @PathVariable Annotation Example
Friday, April 15th, 2011
Background
So, I’m working on an existing Spring 3.x web project. This project heavily favours the use of annotations over XML configuration files. As I was trawling through the source code I noticed the “@PathVariable” annotation (which of course I had to look up!).
Example
Imagine you’d like to create a controller that would allow users to see view products by using a URL such as http://foo.bar.com/productDetails/someProduct
e.g. http://foo.bar.com/productDetails/widgetA - display details for widgetA http://foo.bar.com/productDetails/widgetB - display details for widgetB
The @PathVariable annotation makes this easy…
package foo.bar;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@Controller
public class ShowProductController {
@RequestMapping("/productDetails/{productName}") // Handle any request of the form "/productDetails/XXXXX"
public String showProduct(Model model, @PathVariable("productName") String productName) {
model.addAttribute("productName", productName);
return "showProduct"; // viewname
}
}
What just happened?
Note the {productName} in the @RequestMapping – this is the path variable. The @PathVariable annotation on the next line captures the value and binds it to the method argument
Tags: annotations, java, spring
Posted in Development, Examples | No Comments »
Sample Java interview questions
Thursday, October 21st, 2010
- Explain final, finally and finalize
- Explain volatile
- Difference between ArrayList and LinkedList and why/where would you use each
- Difference between checked and unchecked expections
- JVM – what do arguments Xms, Xmx indicate
- Try/Catch/Finally – do you always need Catch?
- Explain a deadlock
- Name a design pattern, explain when you would use it
- Why do you use Design Patterns?
- Explain Inversion of Control, what advantages does it give you?
Tags: interview, java
Posted in Misc | No Comments »
Access a Spring Bean from within a Servlet
Tuesday, September 21st, 2010
ApplicationContext context =
WebApplicationContextUtils.getWebApplicationContext(getServletContext());
MyService service = (MyService) context.getBean("serviceBeanName");
Tags: java, spring
Posted in Development, quick tips | No Comments »
EasyMock Capture Example
Thursday, September 2nd, 2010
Background
EasyMock version 2.4 introduced some new functionality – the ability to capture the arguments passed to mock objects. As ever a few lines of code speaks volumes.
Capture Example
Test Class
package foo.bar;
import static org.junit.Assert.assertEquals;
import org.easymock.Capture;
import org.easymock.EasyMock;
import org.easymock.IMocksControl;
import org.junit.Before;
import org.junit.Test;
public class TestServiceImpl {
private Service service;
private Dao dao;
private IMocksControl controller;
private final String description = "description";
@Before
public void setUp() throws Exception {
controller = EasyMock.createStrictControl();
dao = controller.createMock(Dao.class);
service = new ServiceImpl();
service.setDao(dao);
}
@Test
public void testSave() {
Capture <DomainObject> capturedArgument = new Capture <DomainObject>();
dao.save(EasyMock.and(EasyMock.capture(capturedArgument), EasyMock.isA(DomainObject.class)));
controller.replay();
service.save(description);
controller.verify();
DomainObject record = capturedArgument.getValue();
assertEquals(description, record.getDescription());
assertEquals("getNextId", record.getId());
}
}
Source code for classes under test after the break…….
(more...)
Tags: easymock, java, testing
Posted in Development, Examples | No Comments »
