Updated the caching behavior code:
This commit is contained in:
parent
57585f9b2c
commit
df2f1cbaf8
|
@ -0,0 +1,9 @@
|
|||
|
||||
@Configuration
|
||||
@EnableCaching
|
||||
|
||||
public class myAppConfig {
|
||||
|
||||
// Your configuration code goes here.
|
||||
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
/**
|
||||
* The Class Customer.
|
||||
*/
|
||||
public class Customer {
|
||||
|
||||
/** The id. */
|
||||
private int id;
|
||||
|
||||
/** The name. */
|
||||
private String name;
|
||||
|
||||
/** The address. */
|
||||
private String customerAddress;
|
||||
|
||||
Customer(String name, String address){
|
||||
this.name = name;
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the id.
|
||||
*
|
||||
* @return the id
|
||||
*/
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the id.
|
||||
*
|
||||
* @param id the new id
|
||||
*/
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name.
|
||||
*
|
||||
* @return the name
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the address.
|
||||
*
|
||||
* @return the address
|
||||
*/
|
||||
public String getCustomerAddress() {
|
||||
return this.customerAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the name.
|
||||
*
|
||||
* @param name the new name
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the address.
|
||||
*
|
||||
* @param name the new address
|
||||
*/
|
||||
public void setCustomerAddress(String address) {
|
||||
this.customerAddress = this.name + "," + address;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
package org.baeldung.caching.example;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.CacheManager;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* The Class CustomerDataService.
|
||||
*/
|
||||
@Component
|
||||
@CacheConfig("addressDemo")
|
||||
public class CustomerDataService {
|
||||
|
||||
/** The cache manager. */
|
||||
@Autowired
|
||||
CacheManager cacheManager;
|
||||
|
||||
/**
|
||||
* Gets the address.
|
||||
*
|
||||
* @param customer the customer
|
||||
* @return the address
|
||||
*/
|
||||
|
||||
@Cacheable("addresses", “directory”)
|
||||
|
||||
public String getAddress1(Customer customer) {
|
||||
|
||||
return customer.getAddress();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the address.
|
||||
*
|
||||
* @param customer the customer
|
||||
* @return the address
|
||||
*/
|
||||
|
||||
@CacheEvict(value="addresses", allEntries=true)
|
||||
|
||||
public String getAddress2(Customer customer) {
|
||||
|
||||
return customer.getAddress();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the address.
|
||||
*
|
||||
* @param customer the customer
|
||||
* @return the address
|
||||
*/
|
||||
|
||||
@Caching(evict = { @CacheEvict("addresses"), @CacheEvict(value="directory", key="customer.name") })
|
||||
|
||||
public String getAddress3(Customer customer) {
|
||||
|
||||
return customer.getAddress();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the address.
|
||||
*
|
||||
* @param customer the customer
|
||||
* @return the address
|
||||
*/
|
||||
|
||||
@Cacheable // parameter not required as we have declared it using @CacheConfig
|
||||
|
||||
public String getAddress4(Customer customer) {
|
||||
|
||||
return customer.getAddress();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the address.
|
||||
*
|
||||
* @param customer the customer
|
||||
* @return the address
|
||||
*/
|
||||
|
||||
|
||||
@CachePut(value="addresses", condition=”#customer.name=’Tom’”)
|
||||
@CachePut(value="addresses", unless=”#result.length>64”)
|
||||
|
||||
public String getAddress5(Customer customer) {
|
||||
|
||||
return customer.getAddress();
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:cache="http://www.springframework.org/schema/cache"
|
||||
xsi:schemaLocation="
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
|
||||
|
||||
<cache:annotation-driven />
|
||||
|
||||
<context:annotation-config/>
|
||||
<bean class="org.baeldung.caching.config.myAppConfig"/>
|
||||
|
||||
|
||||
<!-- the service that you wish to make cacheable.-->
|
||||
<bean id="customerDataService" class="org.baeldung.caching.example.CustomerDataService"/>
|
||||
|
||||
<!-- define caching behavior -->
|
||||
<cache:advice id="cachingBehavior" cache-manager="cacheManager">
|
||||
<cache:caching cache="addresses">
|
||||
<cache:cacheable method="getAddress" key="#customer.name"/>
|
||||
</cache:caching>
|
||||
</cache:advice>
|
||||
|
||||
<!-- apply the behavior to all the implementations of CustomerDataService interface -->
|
||||
<aop:config>
|
||||
<aop:advisor advice-ref="cachingBehavior"
|
||||
pointcut="execution(*org.baeldung.caching.example.CustomerDataService.*(..))"/>
|
||||
</aop:config>
|
||||
|
||||
</beans>
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
|
||||
package org.baeldung.caching.test;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The Class CustomerDataService.
|
||||
*/
|
||||
@Component
|
||||
|
||||
public class SpringCachingBehaviorTest {
|
||||
/**
|
||||
* The main method.
|
||||
*
|
||||
* @param args the arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
@SuppressWarnings("resource")
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
|
||||
example = context.getBean(CustomerDataService.class);
|
||||
Customer cust = new Customer("Tom", "67-2, Downing Street, NY");
|
||||
example.getAddress(cust);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue