(Go: >> BACK << -|- >> HOME <<)

SlideShare a Scribd company logo
Spring 3.1 and MVC
        Testing Support
                     Sam Brannen
                         Swiftmind


                   Rossen Stoyanchev
                    SpringSource, VMware
SpringOne 2GX
October 28, 2011
Sam Brannen
Senior Software Consultant @ Swiftmind
Java developer with 13+ years' experience

Spring Framework Core Developer
Lead author of Spring in a Nutshell

Previous SpringSource dm Server™ developer

Presenter on Spring, Java, OSGi, and testing
Rossen Stoyanchev
Staff Engineer SpringSource, VMware
Spring MVC, Spring Web Flow committer

Teach and consult, Spring Projects

Spring Web course author
NYC area
Goals of the
      Presentation
Gain an overview of testing features
in Spring 3.1
Learn about the new Spring MVC
Test Support project
Agenda
Spring TestContext Framework

Testing with @Configuration Classes
Testing with Environment Profiles
Spring MVC Test Support
Q&A
Show of Hands...
JUnit / TestNG
Spring 2.5 / 3.0 / 3.1
Integration testing with Spring

Spring TestContext Framework
Spring MVC
Spring MVC Test Support
Spring TestContext
    Framework
Introduced in Spring 2.5
Revised in Spring 3.1
Unit and integration testing
Annotation-driven
Convention over Configuration
JUnit & TestNG
Spring & Unit Testing
POJO-based programming model

Program to interfaces
IoC / Dependency Injection

Out-of-container testability

Testing mocks/stubs for various APIs: Servlet,
Portlet, JNDI

General purpose testing utilities
  ReflectionTestUtils
  ModelAndViewAssert
Spring & Integration Testing
 ApplicationContext   management & caching

 Dependency injection of test instances

 Transactional test management
    with default rollback semantics

 SimpleJdbcTestUtils

 JUnit 3.8 support classes are deprecated as of
 Spring 3.0/3.1
Spring Test Annotations
Application Contexts
   @ContextConfiguration, @DirtiesContext

@TestExecutionListeners

Dependency Injection
  @Autowired, @Qualifier,   @Inject,   …

Transactions
   @Transactional, @TransactionConfiguration, @Rollback,
   @BeforeTransaction, @AfterTransaction
Spring JUnit Annotations
  Testing Profiles
    groups, not bean definition
    profiles
    @IfProfileValue,
    @ProfileValueSourceConfiguration

  JUnit extensions
    @Timed, @Repeat
Using the TestContext
     Framework
Use the SpringJUnit4ClassRunner for
JUnit 4.5+
Instrument test class with
TestContextManager for TestNG

Extend one of the base classes
  Abstract(Transactional)[JUnit4|TestNG]Spri
Example: @POJO Test Class


public class OrderServiceTests {




    @Test
    public void testOrderService() { … }
}
Example: @POJO Test Class
@RunWith(SpringJUnit4ClassRunner.class)



public class OrderServiceTests {




    @Test
    public void testOrderService() { … }
}
Example: @POJO Test Class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration


public class OrderServiceTests {




    @Test
    public void testOrderService() { … }
}
Example: @POJO Test Class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration // defaults to
// OrderServiceTests-context.xml in same package
public class OrderServiceTests {




    @Test
    public void testOrderService() { … }
}
Example: @POJO Test Class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration // defaults to
// OrderServiceTests-context.xml in same package

public class OrderServiceTests {
    @Autowired
    private OrderService orderService;




    @Test
    public void testOrderService() { … }
}
Example: @POJO Test Class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration // defaults to
// OrderServiceTests-context.xml in same package
@Transactional
public class OrderServiceTests {

    @Autowired
    private OrderService orderService;




    @Test
    public void testOrderService() { … }
}
Example: @POJO Test Class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration // defaults to
// OrderServiceTests-context.xml in same package
@Transactional
public class OrderServiceTests {

    @Autowired
    private OrderService orderService;

    @BeforeTransaction
    public void verifyInitialDatabaseState() { … }




    @Test
    public void testOrderService() { … }
}
Example: @POJO Test Class
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration // defaults to
// OrderServiceTests-context.xml in same package
@Transactional
public class OrderServiceTests {

    @Autowired
    private OrderService orderService;

    @BeforeTransaction
    public void verifyInitialDatabaseState() { … }

    @Before
    public void setUpTestDataWithinTransaction() { … }

    @Test
    public void testOrderService() { … }
}
Core Components
TestContext
Tracks context for current test

Delegates to a ContextLoader

Caches ApplicationContext
TestContextManager
Manages the TestContext

Signals events to listeners:
  before: before-class methods
  after: test instantiation
  before: before methods
  after: after methods
  after: after-class methods
TestExecutionListener             SPI
Reacts to test execution events
  Receives reference to current TestContext

Out of the box:
  DependencyInjectionTestExecutionListener
  DirtiesContextTestExecutionListener
  TransactionalTestExecutionListener
TestExecutionListener
TEL: Prepare Instance
TEL: Befores and Afters
ContextLoader          SPI
Strategy for loading application contexts
   from resource locations

Out of the box:
  GenericXmlContextLoader
  GenericPropertiesContextLoader
ContextLoader   2.5
Putting it all together
New in Spring 3.1
Support for ...
testing with @Configuration classes
and
testing with environment profiles
made possible by ...
SmartContextLoader
AnnotationConfigContextLoader
DelegatingSmartContextLoader
updated context cache key generation
SmartContextLoader           SPI
Supersedes ContextLoader

Strategy for loading application
contexts
From @Configuration classes or
resource locations
Supports environment profiles
Implementations
GenericXmlContextLoader

GenericPropertiesContextLoader

AnnotationConfigContextLoader

DelegatingSmartContextLoader
ContextLoader   2.5
ContextLoader   3.1
Testing with
@Configuration Classes
@ContextConfiguration
   accepts a new classes attribute...
@ContextConfiguration(
    classes={DataAccessConfig.class,
             ServiceConfig.class})
First, a review with XML config for
           comparison...
OrderServiceTest-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

  <!-- will be injected into OrderServiceTest -->
  <bean id="orderService"
      class="com.example.OrderServiceImpl">
    <!-- set properties, etc. -->
  </bean>

  <!-- other beans -->
</beans>
OrderServiceTest.java

package com.example;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class OrderServiceTest {
    @Autowired
    private OrderService orderService;
    @Test
    public void testOrderService() {
        // test the orderService
    }
}
Let's rework that example to use a
 @Configuration class and the new
  AnnotationConfigContextLoader...
OrderServiceTest.java

@RunWith(SpringJUnit4ClassRunner.class)


public class OrderServiceTest {




    @Autowired
    private OrderService orderService;
    // @Test methods ...
}
OrderServiceTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
    loader=AnnotationConfigContextLoader.class)
public class OrderServiceTest {




    @Autowired
    private OrderService orderService;
    // @Test methods ...
}
OrderServiceTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class OrderServiceTest {




    @Autowired
    private OrderService orderService;
    // @Test methods ...
}
OrderServiceTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class OrderServiceTest {
    @Configuration
    static class Config {




    }
    @Autowired
    private OrderService orderService;
    // @Test methods ...
}
OrderServiceTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class OrderServiceTest {

    @Configuration
    static class Config {
        @Bean // will be injected into OrderServiceTest
        public OrderService orderService() {
          OrderService orderService = new OrderServiceImpl();
          // set properties, etc.
          return orderService;
        }
    }
    @Autowired
    private OrderService orderService;
    // @Test methods ...
}
What's changed?
No XML
Bean definitions are converted to
Java
  using @Configuration and @Bean

Otherwise, the test remains
unchanged
But what if we don't want a static
    inner @Configuration class?
Just externalize the config...
OrderServiceConfig.java

@Configuration
public class OrderServiceConfig {
    @Bean // will be injected into OrderServiceTest
    public OrderService orderService() {
      OrderService orderService = new OrderServiceImpl();
      // set properties, etc.
      return orderService;
    }
}
And reference the config classes in
      @ContextConfiguration...
OrderServiceConfig.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=OrderServiceConfig.class)
public class OrderServiceTest {
    @Autowired
    private OrderService orderService;
    @Test
    public void testOrderService() {
      // test the orderService
    }
}
@Configuration + XML
 Q: How can we combine
 @Configuration classes with XML
 config?
 A: Choose one as the entry point.

 That's how it works in production
 anyway
Importing Configuration
 In XML:
   include @Configuration classes via
   component scanning
   or define them as normal Spring
   beans

 In an @Configuration class:
   use @ImportResource to import XML
   config files
Testing with
Environment Profiles
@ActiveProfiles
  To activate bean definition profiles in tests...


Annotate a test class with
@ActiveProfiles

Supply a list of profiles to be
activated for the test
Can be used with @Configuration
classes and XML config
Let's look at an example with XML
              config...
app-config.xml           (1/2)

<beans ... >

   <bean id="transferService"
       class="com.example.DefaultTransferService">
       <constructor-arg ref="accountRepository"/>
       <constructor-arg ref="feePolicy"/>
   </bean>

   <bean id="accountRepository"
       class="com.example.JdbcAccountRepository">
       <constructor-arg ref="dataSource"/>
   </bean>
   <bean id="feePolicy"
       class="com.example.ZeroFeePolicy"/>
   <!-- dataSource -->

</beans>
app-config.xml           (2/2)

<beans ... >
   <!-- transferService, accountRepository, feePolicy -->




</beans>
app-config.xml           (2/2)

<beans ... >
   <!-- transferService, accountRepository, feePolicy -->
   <beans profile="production">
       <jee:jndi-lookup id="dataSource"
           jndi-name="java:comp/env/jdbc/datasource"/>
   </beans>




</beans>
app-config.xml           (2/2)

<beans ... >
   <!-- transferService, accountRepository, feePolicy -->
   <beans profile="production">
       <jee:jndi-lookup id="dataSource"
           jndi-name="java:comp/env/jdbc/datasource"/>
   </beans>
   <beans profile="dev">
       <jdbc:embedded-database id="dataSource">
           <jdbc:script
               location="classpath:schema.sql"/>
           <jdbc:script
               location="classpath:test-data.sql"/>
       </jdbc:embedded-database>
   </beans>
</beans>
TransferServiceTest.java

@RunWith(SpringJUnit4ClassRunner.class)


public class TransferServiceTest {
    @Autowired
    private TransferService transferService;
    @Test
    public void testTransferService() {
        // test the transferService
    }
}
TransferServiceTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/app-config.xml")
public class TransferServiceTest {
    @Autowired
    private TransferService transferService;
    @Test
    public void testTransferService() {
        // test the transferService
    }
}
TransferServiceTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/app-config.xml")
@ActiveProfiles("dev")
public class TransferServiceTest {
    @Autowired
    private TransferService transferService;
    @Test
    public void testTransferService() {
        // test the transferService
    }
}
And now an example with
  @Configuration classes
TransferServiceConfig.java

@Configuration
public class TransferServiceConfig {

    @Autowired DataSource dataSource;

    @Bean
    public TransferService transferService() {
      return new DefaultTransferService(accountRepository(),
        feePolicy());
    }
    @Bean
    public AccountRepository accountRepository() {
      return new JdbcAccountRepository(dataSource);
    }
    @Bean
    public FeePolicy feePolicy() {
      return new ZeroFeePolicy();
    }
}
}




              JndiDataConfig.java

@Configuration
@Profile("production")
public class JndiDataConfig {

    @Bean
    public DataSource dataSource() throws Exception {
      Context ctx = new InitialContext();
      return (DataSource)
        ctx.lookup("java:comp/env/jdbc/datasource");
    }
}
StandaloneDataConfig.java

@Configuration
@Profile("dev")
public class StandaloneDataConfig {
    @Bean
    public DataSource dataSource() {
      return new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.HSQL)
        .addScript("classpath:schema.sql")
        .addScript("classpath:test-data.sql")
        .build();
    }
}
And finally the test class...
TransferServiceTest.java

package com.bank.service;

@RunWith(SpringJUnit4ClassRunner.class)




public class TransferServiceTest {
    @Autowired
    private TransferService transferService;

    @Test
    public void testTransferService() {
        // test the transferService
    }
}
TransferServiceTest.java

package com.bank.service;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
    classes={
        TransferServiceConfig.class,
        StandaloneDataConfig.class,
        JndiDataConfig.class})
public class TransferServiceTest {
    @Autowired
    private TransferService transferService;

    @Test
    public void testTransferService() {
        // test the transferService
    }
}
TransferServiceTest.java

package com.bank.service;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
    classes={
        TransferServiceConfig.class,
        StandaloneDataConfig.class,
        JndiDataConfig.class})
@ActiveProfiles("dev")
public class TransferServiceTest {
    @Autowired
    private TransferService transferService;
    @Test
    public void testTransferService() {
        // test the transferService
    }
}
Active Profile Inheritance
@ActiveProfiles   supports inheritance as well

Via the inheritProfiles attribute

See Javadoc for an example
ApplicationContext
      Caching
Until Spring 3.1
application contexts were cached
but using only resource locations for
              the key.
Now there are different
   requirements...
New Key Generation Algorithm
The context cache key generation algorithm has been updated to include...


     locations (from @ContextConfiguration)

     classes (from @ContextConfiguration)

     contextLoader (from @ContextConfiguration)

     activeProfiles (from @ActiveProfiles)
Summary
The Spring TestContext Framework simplifies
integration testing of Spring-based
applications
Spring 3.1 provides first-class testing support
for:
   @Configuration classes
   Environment profiles

See the Testing with @Configuration Classes
and Profiles blog for further insight
Spring MVC Test
    Support
How Do You Test an
   @Controller?
@Controller
@RequestMapping("/accounts")
public class AccountController {

// ...
    @ModelAttribute
    public Account getAccount(String number) {
        return this.accountManager.getAccount(number);
    }

    @RequestMapping(method = RequestMethod.POST)
    public String save(@Valid Account account,
                        BindingResult result) {
        if (result.hasErrors()) {
            return "accounts/edit";
        }
        this.accountManager.saveOrUpdate(account);
        return "redirect:accounts";
    }

}
Unit Test?
     Create controller instance

Mock or stub services & repositories
Example
@Test
public void testSave() {
    Account account = new Account();
    BindingResult result =
        new BeanPropertyBindingResult(account, "account");




}
Example
@Test
public void testSave() {

    Account account = new Account();
    BindingResult result =
        new BeanPropertyBindingResult(account, "account");
    AccountManager mgr = createMock(AccountManager.class);
    mgr.saveOrUpdate(account);
    replay(mgr);




}
Example
@Test
public void testSave() {
    Account account = new Account();
    BindingResult result =
        new BeanPropertyBindingResult(account, "account");
    AccountManager mgr = createMock(AccountManager.class);
    mgr.saveOrUpdate(account);
    replay(mgr);
    AccountController contrlr = new AccountController(mgr);
    String view = contrlr.save(account, result);



}
Example
@Test
public void testSave() {
    Account account = new Account();
    BindingResult result =
        new BeanPropertyBindingResult(account, "account");
    AccountManager mgr = createMock(AccountManager.class);
    mgr.saveOrUpdate(account);
    replay(mgr);
    AccountController contrlr = new AccountController(mgr);

    String view = contrlr.save(account, result);
    assertEquals("redirect:accounts", view);
    verify(mgr);
}
Example With Failure
@Test
public void testSave() {
    Account account = new Account();
    BindingResult result =
        new BeanPropertyBindingResult(account, "account");

    result.reject("error.code", "default message")




}
Example With Failure
@Test
public void testSave() {

    Account account = new Account();
    BindingResult result =
        new BeanPropertyBindingResult(account, "account");

    result.reject("error.code", "default message")
    AccountManager mgr = createMock(AccountManager.class);
    replay(mgr);




}
Example With Failure
@Test
public void testSave() {

    Account account = new Account();
    BindingResult result =
        new BeanPropertyBindingResult(account, "account");
    result.reject("error.code", "default message")
    AccountManager mgr = createMock(AccountManager.class);
    replay(mgr);
    AccountController contrlr = new AccountController(mgr);
    String view = contrlr.save(account, result);
    assertEquals("accounts/edit", view);
    verify(mgr);
}
Not Fully Tested
  Request mappings

    Binding errors

   Type conversion

         Etc.
Integration Test?
      Selenium

      JWebUnit

        etc.
It Requires...
A running servlet container

  More time to execute

 More effort to maintain

   Server is a black box
Actually...
it's an end-to-end test
the only way to verify...
         Client-side behavior

Interaction with other server instances

          Redis, Rabbit, etc.
We'd also like to...
   Test controllers once!

      Fully & quickly

    Execute tests often
In summary...
We can't replace the need for end-to-
              end tests

     But we can minimize errors

   Have confidence in @MVC code

      During end-to-end tests
Spring MVC Test
         Built on spring-test

         No Servlet container

  Drives Spring MVC infrastructure

Both server & client-side test support
       (i.e. RestTemplate code)

      Inspired by spring-ws-test
The Approach
  Re-use controller test fixtures

I.e. mocked services & repositories

Invoke @Controller classes through
      @MVC infrastructure
Example
String contextLoc = "classpath:appContext.xml";
String warDir = "src/main/webapp";
MockMvc mockMvc =
  xmlConfigSetup(contextLoc)
    .configureWebAppRootDir(warDir, false)
    .build();

mockMvc.perform(post("/persons"))
  .andExpect(response().status().isOk())
  .andExpect(response().forwardedUrl("/add.jsp"))
  .andExpect(model().size(1))
  .andExpect(model().hasAttributes("person"));
Under the Covers
Mock request/response from spring-test

    DispatcherServlet   replacement

   Multiple ways to initialize MVC
            infrastructure

    Save results for expectations
Ways To Initialize MVC
   Infrastructure
From Existing XML Config
// XML config
MockMvc mockMvc =
    xmlConfigSetup("classpath:appContext.xml")
      .activateProfiles(..)
      .configureWebAppRootDir(warDir, false)
      .build();
From Existing Java Config
// Java config
MockMvc mockMvc =
    annotationConfigSetup(WebConfig.class)
      .activateProfiles(..)
      .configureWebAppRootDir(warDir, false)
      .build();
Manually
MockMvc mockMvc =
    standaloneSetup(new PersonController())
      .setMessageConverters(..)
      .setValidator(..)
      .setConversionService(..)
      .addInterceptors(..)
      .setViewResolvers(..)
      .setLocaleResolver(..)
      .build();
About Manual Setup
MVC components instantiated directly

   Not looked up in Spring context

       Focused, readable tests

But must verify MVC config separately
TestContext            Framework Example
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
        locations={"/org/example/servlet-context.xml"})
public class TestContextTests {
    @Autowired
    private WebApplicationContext wac;
    @Before
    public void setup() {
      MockMvc mockMvc =
          MockMvcBuilders.webApplicationContextSetup(this.wac)
            .build();
    }
}
TestContext       Framework
 Caches loaded Spring configuration

     Potentially across all tests!
However...
WebApplicationContext   not supported yet

    To be supported in Spring 3.2
In the mean time...
You can use a custom ContextLoader

 Example exists in spring-test-mvc
Step 1
  Add static imports

   MockMvcBuilders.*

MockMvcRequestBuilders.*

MockMvcResultActions.*
Easy to remember...
       MockMvc*
Also in Eclipse...
Add MockMvc* classes in Preferences

   Java -> Editor -> Favorites

       Helps content assist
Step 2
              Initialize MVC infrastructure

String contextLoc = "classpath:appContext.xml";
String warDir = "src/main/webapp";
MockMvc mockMvc = xmlConfigSetup("classpath:appContext.xml")
    .configureWebAppRootDir(warDir, false)
    .build()




// ...
Step 3
                     Build Request

String contextLoc = "classpath:appContext.xml";
String warDir = "src/main/webapp";
MockMvc mockMvc = xmlConfigSetup("classpath:appContext.xml")
    .configureWebAppRootDir(warDir, false)
    .build()

mockMvc.perform(get("/").accept(MediaType.APPLICATION_XML))




// ...
Step 4
                   Add Expectations

String contextLoc = "classpath:appContext.xml";
String warDir = "src/main/webapp";
MockMvc mockMvc = xmlConfigSetup("classpath:appContext.xml")
    .configureWebAppRootDir(warDir, false)
    .build()
mockMvc.perform(get("/").accept(MediaType.APPLICATION_XML))
      .andExpect(response().status().isOk())
      .andExpect(response().contentType(MediaType))
      .andExpect(response().content().xpath(String).exists())
      .andExpect(response().redirectedUrl(String))
      .andExpect(model().hasAttributes(String...));


// ...
Step 5
                         Debug

String contextLoc = "classpath:appContext.xml";
String warDir = "src/main/webapp";
MockMvc mockMvc = xmlConfigSetup("classpath:appContext.xml")
    .configureWebAppRootDir(warDir, false)
    .build()
mockMvc.perform(get("/").accept(MediaType.APPLICATION_XML))
      .andPrint(toConsole());




// ...
Demo
https://github.com/SpringSource/spring-test-mvc



                Sample Tests:

  org.springframework.test.web.server.samples
Client-Side Example
RestTemplate restTemplate = ... ;

MockRestServiceServer.createServer(restTemplate)
    .expect(requestTo(String))
    .andExpect(method(HttpMethod))
    .andExpect(body(String))
    .andExpect(headerContains(String, String))
    .andRespond(withResponse(String, HttpHeaders));
Project Availability
github.com/SpringSource/spring-test-mvc

        Request for feedback!

           Send comments

             Pull requests
Nightly Snapshot Available
<repository>
    <id>org.springframework.maven.snapshot</id>
    <name>Spring Maven Snapshot Repository</name>
    <url>http://maven.springframework.org/snapshot</url>
    <releases>
        <enabled>false</enabled>
    </releases>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>
In Closing ...
This Presentation
Source:
https://github.com/rstoyanchev/spring-31-and-mvc-
testing-support
Slides:
http://rstoyanchev.github.com/spring-31-and-mvc-
test
Resources for Spring MVC Test
Project Home:
https://github.com/SpringSource/spring-test-mvc
Sample Tests:
org.springframework.test.web.server.samples
Resources for Core Spring
Spring Framework:
http://www.springsource.org/spring-core
Reference Manual: Spring 3.1 RC1

Forums: http://forum.springframework.org
JIRA: https://jira.springsource.org

Spring in a Nutshell … available in 2012
Q&A
  Sam Brannen
  Web: Swiftmind.com
 Twitter: @sam_brannen


Rossen Stoyanchev
 Web: SpringSource.com
   Twitter: @rstoya05

More Related Content

What's hot

Common issues with Apache Kafka® Producer
Common issues with Apache Kafka® ProducerCommon issues with Apache Kafka® Producer
Common issues with Apache Kafka® Producer
confluent
 
美团数据平台之Kafka应用实践和优化
美团数据平台之Kafka应用实践和优化美团数据平台之Kafka应用实践和优化
美团数据平台之Kafka应用实践和优化
confluent
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
オラクルエンジニア通信
 
New Generation Oracle RAC Performance
New Generation Oracle RAC PerformanceNew Generation Oracle RAC Performance
New Generation Oracle RAC Performance
Anil Nair
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
yoku0825
 
How Prometheus Store the Data
How Prometheus Store the DataHow Prometheus Store the Data
How Prometheus Store the Data
Hao Chen
 
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
NHN FORWARD
 
Linux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performanceLinux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performance
PostgreSQL-Consulting
 
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Miguel Araújo
 
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterMySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
Kenny Gryp
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
Ji-Woong Choi
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
Taras Matyashovsky
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
NeoClova
 
ProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management OverviewProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management Overview
René Cannaò
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
yoku0825
 
My sql failover test using orchestrator
My sql failover test  using orchestratorMy sql failover test  using orchestrator
My sql failover test using orchestrator
YoungHeon (Roy) Kim
 
OpenGurukul : Database : PostgreSQL
OpenGurukul : Database : PostgreSQLOpenGurukul : Database : PostgreSQL
OpenGurukul : Database : PostgreSQL
Open Gurukul
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Masahito Zembutsu
 
Chasing the optimizer
Chasing the optimizerChasing the optimizer
Chasing the optimizer
Mauro Pagano
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
yoku0825
 

What's hot (20)

Common issues with Apache Kafka® Producer
Common issues with Apache Kafka® ProducerCommon issues with Apache Kafka® Producer
Common issues with Apache Kafka® Producer
 
美团数据平台之Kafka应用实践和优化
美团数据平台之Kafka应用实践和优化美团数据平台之Kafka应用实践和优化
美团数据平台之Kafka应用实践和优化
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
 
New Generation Oracle RAC Performance
New Generation Oracle RAC PerformanceNew Generation Oracle RAC Performance
New Generation Oracle RAC Performance
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
 
How Prometheus Store the Data
How Prometheus Store the DataHow Prometheus Store the Data
How Prometheus Store the Data
 
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
 
Linux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performanceLinux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performance
 
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
 
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterMySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
 
ProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management OverviewProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management Overview
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
 
My sql failover test using orchestrator
My sql failover test  using orchestratorMy sql failover test  using orchestrator
My sql failover test using orchestrator
 
OpenGurukul : Database : PostgreSQL
OpenGurukul : Database : PostgreSQLOpenGurukul : Database : PostgreSQL
OpenGurukul : Database : PostgreSQL
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
 
Chasing the optimizer
Chasing the optimizerChasing the optimizer
Chasing the optimizer
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
 

Viewers also liked

Building Workflow Applications Through the Web
Building Workflow Applications Through the WebBuilding Workflow Applications Through the Web
Building Workflow Applications Through the Web
T. Kim Nguyen
 
Babelfish Articles Dec 2011
Babelfish Articles Dec 2011Babelfish Articles Dec 2011
Babelfish Articles Dec 2011
Brian Crotty
 
BPM und SOA machen mobil - Ein Architekturüberblick
BPM und SOA machen mobil - Ein ArchitekturüberblickBPM und SOA machen mobil - Ein Architekturüberblick
BPM und SOA machen mobil - Ein Architekturüberblick
OPITZ CONSULTING Deutschland
 
App Engine Meetup
App Engine MeetupApp Engine Meetup
App Engine Meetup
John Woodell
 
Customizing Your Document in PerfectForms
Customizing Your Document in PerfectFormsCustomizing Your Document in PerfectForms
Customizing Your Document in PerfectForms
Karen Hunter-Sliger
 
Lincs Business networking presentation
Lincs Business networking presentationLincs Business networking presentation
Lincs Business networking presentation
Malcolm York
 
Fredericton Newcomers Guide 2013
Fredericton Newcomers Guide 2013Fredericton Newcomers Guide 2013
Fredericton Newcomers Guide 2013
LaurieGuthrie
 
Preparing #EdCampSantiago 2013: Looking @ Dialogue
Preparing #EdCampSantiago 2013: Looking @ Dialogue Preparing #EdCampSantiago 2013: Looking @ Dialogue
Preparing #EdCampSantiago 2013: Looking @ Dialogue
Baker Publishing Company
 
Livroabelhas brasileiras 2002
Livroabelhas brasileiras 2002Livroabelhas brasileiras 2002
Livroabelhas brasileiras 2002
Roberta Leme
 
[En] epayments in Europe -mbaesg Paris
[En] epayments in Europe -mbaesg Paris[En] epayments in Europe -mbaesg Paris
[En] epayments in Europe -mbaesg Paris
Yann Gourvennec
 
Mexican Muralist Movement
Mexican Muralist MovementMexican Muralist Movement
Mexican Muralist Movement
rosabrito
 
SPSUK Apps for Office
SPSUK Apps for OfficeSPSUK Apps for Office
SPSUK Apps for Office
Wes Hackett
 
IGNITS @NIT Silchar
IGNITS @NIT SilcharIGNITS @NIT Silchar
IGNITS @NIT Silchar
Kishor Satpathy
 
Seoul tap water arisu
Seoul tap water arisu Seoul tap water arisu
Seoul tap water arisu
simrc
 
Evolution and digital design business models
Evolution and digital design business modelsEvolution and digital design business models
Evolution and digital design business models
digital wellbeing labs
 
IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)
Nico Meisenzahl
 
Oh life pdf presentation
Oh life pdf presentationOh life pdf presentation
Oh life pdf presentation
Mobile Health at Stanford
 
Comments (1)
Comments (1)Comments (1)
Comments (1)
السيد مانجو
 
オススメの技術書
オススメの技術書オススメの技術書
オススメの技術書
Hiromu Shioya
 
Bangalore IT Directory
Bangalore IT DirectoryBangalore IT Directory
Bangalore IT Directory
Gurudev Basavaraj Goud
 

Viewers also liked (20)

Building Workflow Applications Through the Web
Building Workflow Applications Through the WebBuilding Workflow Applications Through the Web
Building Workflow Applications Through the Web
 
Babelfish Articles Dec 2011
Babelfish Articles Dec 2011Babelfish Articles Dec 2011
Babelfish Articles Dec 2011
 
BPM und SOA machen mobil - Ein Architekturüberblick
BPM und SOA machen mobil - Ein ArchitekturüberblickBPM und SOA machen mobil - Ein Architekturüberblick
BPM und SOA machen mobil - Ein Architekturüberblick
 
App Engine Meetup
App Engine MeetupApp Engine Meetup
App Engine Meetup
 
Customizing Your Document in PerfectForms
Customizing Your Document in PerfectFormsCustomizing Your Document in PerfectForms
Customizing Your Document in PerfectForms
 
Lincs Business networking presentation
Lincs Business networking presentationLincs Business networking presentation
Lincs Business networking presentation
 
Fredericton Newcomers Guide 2013
Fredericton Newcomers Guide 2013Fredericton Newcomers Guide 2013
Fredericton Newcomers Guide 2013
 
Preparing #EdCampSantiago 2013: Looking @ Dialogue
Preparing #EdCampSantiago 2013: Looking @ Dialogue Preparing #EdCampSantiago 2013: Looking @ Dialogue
Preparing #EdCampSantiago 2013: Looking @ Dialogue
 
Livroabelhas brasileiras 2002
Livroabelhas brasileiras 2002Livroabelhas brasileiras 2002
Livroabelhas brasileiras 2002
 
[En] epayments in Europe -mbaesg Paris
[En] epayments in Europe -mbaesg Paris[En] epayments in Europe -mbaesg Paris
[En] epayments in Europe -mbaesg Paris
 
Mexican Muralist Movement
Mexican Muralist MovementMexican Muralist Movement
Mexican Muralist Movement
 
SPSUK Apps for Office
SPSUK Apps for OfficeSPSUK Apps for Office
SPSUK Apps for Office
 
IGNITS @NIT Silchar
IGNITS @NIT SilcharIGNITS @NIT Silchar
IGNITS @NIT Silchar
 
Seoul tap water arisu
Seoul tap water arisu Seoul tap water arisu
Seoul tap water arisu
 
Evolution and digital design business models
Evolution and digital design business modelsEvolution and digital design business models
Evolution and digital design business models
 
IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)IBM Connections Adminblast - Connect17 (DEV 1268)
IBM Connections Adminblast - Connect17 (DEV 1268)
 
Oh life pdf presentation
Oh life pdf presentationOh life pdf presentation
Oh life pdf presentation
 
Comments (1)
Comments (1)Comments (1)
Comments (1)
 
オススメの技術書
オススメの技術書オススメの技術書
オススメの技術書
 
Bangalore IT Directory
Bangalore IT DirectoryBangalore IT Directory
Bangalore IT Directory
 

Similar to Spring 3.1 and MVC Testing Support

Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2
Sam Brannen
 
S313352 optimizing java device testing with automatic feature discovering
S313352 optimizing java device testing with automatic feature discoveringS313352 optimizing java device testing with automatic feature discovering
S313352 optimizing java device testing with automatic feature discovering
romanovfedor
 
Testing with JUnit 5 and Spring
Testing with JUnit 5 and SpringTesting with JUnit 5 and Spring
Testing with JUnit 5 and Spring
VMware Tanzu
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
Purbarun Chakrabarti
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
javatwo2011
 
Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2
Rossen Stoyanchev
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
Gunith Devasurendra
 
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdfdokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
Appster1
 
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
dokumen.tips_rediscovering-spring-with-spring-boot1.pdfdokumen.tips_rediscovering-spring-with-spring-boot1.pdf
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
Appster1
 
Junit_.pptx
Junit_.pptxJunit_.pptx
Junit_.pptx
Suman Sourav
 
Dependency injection in scala
Dependency injection in scalaDependency injection in scala
Dependency injection in scala
Michal Bigos
 
Spring frame work
Spring frame workSpring frame work
Spring frame work
husnara mohammad
 
Spring 3: What's New
Spring 3: What's NewSpring 3: What's New
Spring 3: What's New
Ted Pennings
 
Qtp Presentation
Qtp PresentationQtp Presentation
Qtp Presentation
techgajanan
 
Qtp Training
Qtp TrainingQtp Training
Qtp Training
mehramit
 
TESTLINK INTEGRATOR
TESTLINK INTEGRATORTESTLINK INTEGRATOR
TESTLINK INTEGRATOR
Hirosh Tharaka
 
quickguide-einnovator-2-spring4-dependency-injection-annotations
quickguide-einnovator-2-spring4-dependency-injection-annotationsquickguide-einnovator-2-spring4-dependency-injection-annotations
quickguide-einnovator-2-spring4-dependency-injection-annotations
jorgesimao71
 
Understanding Annotations in Java
Understanding Annotations in JavaUnderstanding Annotations in Java
Understanding Annotations in Java
Ecommerce Solution Provider SysIQ
 
Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022
Sam Brannen
 
J2ee standards > CDI
J2ee standards > CDIJ2ee standards > CDI
J2ee standards > CDI
harinderpisces
 

Similar to Spring 3.1 and MVC Testing Support (20)

Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2
 
S313352 optimizing java device testing with automatic feature discovering
S313352 optimizing java device testing with automatic feature discoveringS313352 optimizing java device testing with automatic feature discovering
S313352 optimizing java device testing with automatic feature discovering
 
Testing with JUnit 5 and Spring
Testing with JUnit 5 and SpringTesting with JUnit 5 and Spring
Testing with JUnit 5 and Spring
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
 
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdfdokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
 
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
dokumen.tips_rediscovering-spring-with-spring-boot1.pdfdokumen.tips_rediscovering-spring-with-spring-boot1.pdf
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
 
Junit_.pptx
Junit_.pptxJunit_.pptx
Junit_.pptx
 
Dependency injection in scala
Dependency injection in scalaDependency injection in scala
Dependency injection in scala
 
Spring frame work
Spring frame workSpring frame work
Spring frame work
 
Spring 3: What's New
Spring 3: What's NewSpring 3: What's New
Spring 3: What's New
 
Qtp Presentation
Qtp PresentationQtp Presentation
Qtp Presentation
 
Qtp Training
Qtp TrainingQtp Training
Qtp Training
 
TESTLINK INTEGRATOR
TESTLINK INTEGRATORTESTLINK INTEGRATOR
TESTLINK INTEGRATOR
 
quickguide-einnovator-2-spring4-dependency-injection-annotations
quickguide-einnovator-2-spring4-dependency-injection-annotationsquickguide-einnovator-2-spring4-dependency-injection-annotations
quickguide-einnovator-2-spring4-dependency-injection-annotations
 
Understanding Annotations in Java
Understanding Annotations in JavaUnderstanding Annotations in Java
Understanding Annotations in Java
 
Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022
 
J2ee standards > CDI
J2ee standards > CDIJ2ee standards > CDI
J2ee standards > CDI
 

More from Sam Brannen

Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Sam Brannen
 
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
Sam Brannen
 
JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019
Sam Brannen
 
JUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVMJUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVM
Sam Brannen
 
Get the Most out of Testing with Spring 4.2
Get the Most out of Testing with Spring 4.2Get the Most out of Testing with Spring 4.2
Get the Most out of Testing with Spring 4.2
Sam Brannen
 
JUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyondJUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyond
Sam Brannen
 
Testing with Spring: An Introduction
Testing with Spring: An IntroductionTesting with Spring: An Introduction
Testing with Spring: An Introduction
Sam Brannen
 
Testing with Spring 4.x
Testing with Spring 4.xTesting with Spring 4.x
Testing with Spring 4.x
Sam Brannen
 
Spring Framework 4.1
Spring Framework 4.1Spring Framework 4.1
Spring Framework 4.1
Sam Brannen
 
Testing Spring MVC and REST Web Applications
Testing Spring MVC and REST Web ApplicationsTesting Spring MVC and REST Web Applications
Testing Spring MVC and REST Web Applications
Sam Brannen
 
Composable Software Architecture with Spring
Composable Software Architecture with SpringComposable Software Architecture with Spring
Composable Software Architecture with Spring
Sam Brannen
 
Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1
Sam Brannen
 
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Sam Brannen
 
Spring Framework 3.2 - What's New
Spring Framework 3.2 - What's NewSpring Framework 3.2 - What's New
Spring Framework 3.2 - What's New
Sam Brannen
 
Spring 3.1 and MVC Testing Support - 4Developers
Spring 3.1 and MVC Testing Support - 4DevelopersSpring 3.1 and MVC Testing Support - 4Developers
Spring 3.1 and MVC Testing Support - 4Developers
Sam Brannen
 
Effective out-of-container Integration Testing - 4Developers
Effective out-of-container Integration Testing - 4DevelopersEffective out-of-container Integration Testing - 4Developers
Effective out-of-container Integration Testing - 4Developers
Sam Brannen
 
Spring 3.1 to 3.2 in a Nutshell - SDC2012
Spring 3.1 to 3.2 in a Nutshell - SDC2012Spring 3.1 to 3.2 in a Nutshell - SDC2012
Spring 3.1 to 3.2 in a Nutshell - SDC2012
Sam Brannen
 
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Sam Brannen
 
Spring 3.1 in a Nutshell - JAX London 2011
Spring 3.1 in a Nutshell - JAX London 2011Spring 3.1 in a Nutshell - JAX London 2011
Spring 3.1 in a Nutshell - JAX London 2011
Sam Brannen
 
Spring 3.1 in a Nutshell
Spring 3.1 in a NutshellSpring 3.1 in a Nutshell
Spring 3.1 in a Nutshell
Sam Brannen
 

More from Sam Brannen (20)

Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
 
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
 
JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019
 
JUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVMJUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVM
 
Get the Most out of Testing with Spring 4.2
Get the Most out of Testing with Spring 4.2Get the Most out of Testing with Spring 4.2
Get the Most out of Testing with Spring 4.2
 
JUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyondJUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyond
 
Testing with Spring: An Introduction
Testing with Spring: An IntroductionTesting with Spring: An Introduction
Testing with Spring: An Introduction
 
Testing with Spring 4.x
Testing with Spring 4.xTesting with Spring 4.x
Testing with Spring 4.x
 
Spring Framework 4.1
Spring Framework 4.1Spring Framework 4.1
Spring Framework 4.1
 
Testing Spring MVC and REST Web Applications
Testing Spring MVC and REST Web ApplicationsTesting Spring MVC and REST Web Applications
Testing Spring MVC and REST Web Applications
 
Composable Software Architecture with Spring
Composable Software Architecture with SpringComposable Software Architecture with Spring
Composable Software Architecture with Spring
 
Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1
 
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
 
Spring Framework 3.2 - What's New
Spring Framework 3.2 - What's NewSpring Framework 3.2 - What's New
Spring Framework 3.2 - What's New
 
Spring 3.1 and MVC Testing Support - 4Developers
Spring 3.1 and MVC Testing Support - 4DevelopersSpring 3.1 and MVC Testing Support - 4Developers
Spring 3.1 and MVC Testing Support - 4Developers
 
Effective out-of-container Integration Testing - 4Developers
Effective out-of-container Integration Testing - 4DevelopersEffective out-of-container Integration Testing - 4Developers
Effective out-of-container Integration Testing - 4Developers
 
Spring 3.1 to 3.2 in a Nutshell - SDC2012
Spring 3.1 to 3.2 in a Nutshell - SDC2012Spring 3.1 to 3.2 in a Nutshell - SDC2012
Spring 3.1 to 3.2 in a Nutshell - SDC2012
 
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
 
Spring 3.1 in a Nutshell - JAX London 2011
Spring 3.1 in a Nutshell - JAX London 2011Spring 3.1 in a Nutshell - JAX London 2011
Spring 3.1 in a Nutshell - JAX London 2011
 
Spring 3.1 in a Nutshell
Spring 3.1 in a NutshellSpring 3.1 in a Nutshell
Spring 3.1 in a Nutshell
 

Recently uploaded

Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024
Michael Price
 
LeadMagnet IQ Review: Unlock the Secret to Effortless Traffic and Leads.pdf
LeadMagnet IQ Review:  Unlock the Secret to Effortless Traffic and Leads.pdfLeadMagnet IQ Review:  Unlock the Secret to Effortless Traffic and Leads.pdf
LeadMagnet IQ Review: Unlock the Secret to Effortless Traffic and Leads.pdf
SelfMade bd
 
Retrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with RagasRetrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with Ragas
Zilliz
 
kk vathada _digital transformation frameworks_2024.pdf
kk vathada _digital transformation frameworks_2024.pdfkk vathada _digital transformation frameworks_2024.pdf
kk vathada _digital transformation frameworks_2024.pdf
KIRAN KV
 
It's your unstructured data: How to get your GenAI app to production (and spe...
It's your unstructured data: How to get your GenAI app to production (and spe...It's your unstructured data: How to get your GenAI app to production (and spe...
It's your unstructured data: How to get your GenAI app to production (and spe...
Zilliz
 
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and ConsiderationsChoosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
webbyacad software
 
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Snarky Security
 
Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024
siddu769252
 
Redefining Cybersecurity with AI Capabilities
Redefining Cybersecurity with AI CapabilitiesRedefining Cybersecurity with AI Capabilities
Redefining Cybersecurity with AI Capabilities
Priyanka Aash
 
COVID-19 and the Level of Cloud Computing Adoption: A Study of Sri Lankan Inf...
COVID-19 and the Level of Cloud Computing Adoption: A Study of Sri Lankan Inf...COVID-19 and the Level of Cloud Computing Adoption: A Study of Sri Lankan Inf...
COVID-19 and the Level of Cloud Computing Adoption: A Study of Sri Lankan Inf...
AimanAthambawa1
 
UX Webinar Series: Drive Revenue and Decrease Costs with Passkeys for Consume...
UX Webinar Series: Drive Revenue and Decrease Costs with Passkeys for Consume...UX Webinar Series: Drive Revenue and Decrease Costs with Passkeys for Consume...
UX Webinar Series: Drive Revenue and Decrease Costs with Passkeys for Consume...
FIDO Alliance
 
NVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space ExplorationNVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space Exploration
Alison B. Lowndes
 
Scaling Vector Search: How Milvus Handles Billions+
Scaling Vector Search: How Milvus Handles Billions+Scaling Vector Search: How Milvus Handles Billions+
Scaling Vector Search: How Milvus Handles Billions+
Zilliz
 
Zaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdfZaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdf
AmandaCheung15
 
Keynote : Presentation on SASE Technology
Keynote : Presentation on SASE TechnologyKeynote : Presentation on SASE Technology
Keynote : Presentation on SASE Technology
Priyanka Aash
 
The History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal EmbeddingsThe History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal Embeddings
Zilliz
 
Finetuning GenAI For Hacking and Defending
Finetuning GenAI For Hacking and DefendingFinetuning GenAI For Hacking and Defending
Finetuning GenAI For Hacking and Defending
Priyanka Aash
 
The Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - CoatueThe Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - Coatue
Razin Mustafiz
 
Challenges and Strategies of Digital Transformation.pptx
Challenges and Strategies of Digital Transformation.pptxChallenges and Strategies of Digital Transformation.pptx
Challenges and Strategies of Digital Transformation.pptx
wisdomfishlee
 
Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1
DianaGray10
 

Recently uploaded (20)

Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024
 
LeadMagnet IQ Review: Unlock the Secret to Effortless Traffic and Leads.pdf
LeadMagnet IQ Review:  Unlock the Secret to Effortless Traffic and Leads.pdfLeadMagnet IQ Review:  Unlock the Secret to Effortless Traffic and Leads.pdf
LeadMagnet IQ Review: Unlock the Secret to Effortless Traffic and Leads.pdf
 
Retrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with RagasRetrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with Ragas
 
kk vathada _digital transformation frameworks_2024.pdf
kk vathada _digital transformation frameworks_2024.pdfkk vathada _digital transformation frameworks_2024.pdf
kk vathada _digital transformation frameworks_2024.pdf
 
It's your unstructured data: How to get your GenAI app to production (and spe...
It's your unstructured data: How to get your GenAI app to production (and spe...It's your unstructured data: How to get your GenAI app to production (and spe...
It's your unstructured data: How to get your GenAI app to production (and spe...
 
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and ConsiderationsChoosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
 
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
 
Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024
 
Redefining Cybersecurity with AI Capabilities
Redefining Cybersecurity with AI CapabilitiesRedefining Cybersecurity with AI Capabilities
Redefining Cybersecurity with AI Capabilities
 
COVID-19 and the Level of Cloud Computing Adoption: A Study of Sri Lankan Inf...
COVID-19 and the Level of Cloud Computing Adoption: A Study of Sri Lankan Inf...COVID-19 and the Level of Cloud Computing Adoption: A Study of Sri Lankan Inf...
COVID-19 and the Level of Cloud Computing Adoption: A Study of Sri Lankan Inf...
 
UX Webinar Series: Drive Revenue and Decrease Costs with Passkeys for Consume...
UX Webinar Series: Drive Revenue and Decrease Costs with Passkeys for Consume...UX Webinar Series: Drive Revenue and Decrease Costs with Passkeys for Consume...
UX Webinar Series: Drive Revenue and Decrease Costs with Passkeys for Consume...
 
NVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space ExplorationNVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space Exploration
 
Scaling Vector Search: How Milvus Handles Billions+
Scaling Vector Search: How Milvus Handles Billions+Scaling Vector Search: How Milvus Handles Billions+
Scaling Vector Search: How Milvus Handles Billions+
 
Zaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdfZaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdf
 
Keynote : Presentation on SASE Technology
Keynote : Presentation on SASE TechnologyKeynote : Presentation on SASE Technology
Keynote : Presentation on SASE Technology
 
The History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal EmbeddingsThe History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal Embeddings
 
Finetuning GenAI For Hacking and Defending
Finetuning GenAI For Hacking and DefendingFinetuning GenAI For Hacking and Defending
Finetuning GenAI For Hacking and Defending
 
The Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - CoatueThe Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - Coatue
 
Challenges and Strategies of Digital Transformation.pptx
Challenges and Strategies of Digital Transformation.pptxChallenges and Strategies of Digital Transformation.pptx
Challenges and Strategies of Digital Transformation.pptx
 
Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1
 

Spring 3.1 and MVC Testing Support