рдореБрдЭрд╕реЗ рдЧрд▓рддреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕рд┐рджреНрдз рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ 2.5 (рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛) рд╕рдВрд╕реНрдХрд░рдг 2.5 рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдЪрдордХрд╛рдиреЗ" рдХреА рдмрд╛рдд рд╣реИ - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ 3.0 рднреА 2.5 рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред
рдЖрдЧрд╛рдореА 3.1 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдпрд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЫреЛрдЯреЗ рд╕реБрдзрд╛рд░, рдЪрд┐рдкреНрд╕ - рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, 3.1 рдореЗрдВ рдПрдХ "рдЪрд╛рд▓" рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрд╛ - рдпрд╣ рдХреИрд╢рд┐рдВрдЧ рд╣реИред

рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд╣рдд рдХрд┐рд╕реА рднреА рдЖрд╡реЗрджрди рдореЗрдВ, рд╣рдо рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рдЗрдмрд░рдиреЗрдЯ - рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) - рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк "рд╕реЗрд╡рд╛рдУрдВ" рд╕реНрддрд░ рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдХреИрд╢рд┐рдВрдЧ рд╣реИред рдРрд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд╛рдлреА рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХрдИ рдХреЙрд▓, рдЕрдиреНрдп рд╕реЗрд╡рд╛рдПрдВ, рдЧрдгрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдФрд░ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ 3.1 рдореЗрдВ, рдпрд╣
@ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдЕрд╕рд▓ рдореЗрдВ - рд╕рд░реНрд╡рд┐рд╕ рд▓реЗрд╡рд▓ рдкрд░ рдХреИрд╢рд┐рдВрдЧ рдкрд╣рд▓реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рдереА, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдореВрд▓реНрдп рдХреИрд╢рд┐рдВрдЧ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рдзрд┐ "рдЧреВрдВрдЧрд╛" рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ) рдЖрдИрдПрд╕рдмреАрдПрди рдкрд░ рдПрдХ рдкреБрд╕реНрддрдХ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐:
public Book findBook(ISBN isbn) {...}
рдЕрдм, рдЗрд╕ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ:
@Cacheable("books")
public Book findBook(ISBN isbn) {...}
рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рд╕реНрд╡рдпрдВ рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЛ рд▓рдЯрдХрд╛рдПрдЧрд╛, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдХреБрдВрдЬреА рдмрдирд╛рдпреЗрдЧрд╛, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХреИрд╢ рдореЗрдВ рдХреЛрдИ рдореВрд▓реНрдп рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХреИрд╢ рдХрд░реЗрдЧрд╛ред
рдХреНрдпрд╛ рд╡рд╣ рд╕рдм рд╣реИ? рд▓рдЧрднрдЧ рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВ
рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрджрд░реНрдн рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди xml рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
<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 www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/cache www.springframework.org/schema/cache/spring-cache.xsd">
<cache:annotation-driven />
рдФрд░ рдХреИрд╢-рдореИрдиреЗрдЬрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд░рд▓ (рдХреЙрдиреНрдЯреНрд░рд╛рд╕рдЯреНрд░реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)
<bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="default"/>
<bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="books"/>
рдпрд╛ ehcache (рдЖрдк рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhcacheCacheManager" p:cache-manager="ehcache"/>
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:config-location="ehcache.xml"/>
рдХреИрд╢реЗ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ
рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрд░реЛрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреИрд╢ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреБрд░рд╛рдиреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рднреА рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - @ рдХреИрд╢:
@CacheEvict(value = "books", allEntries=true)
public void loadBooks(InputStream batch)
рд╡рд╣ рд╕рдм рд╣реИред рдмрд╕? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреИрд╢рд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛рдлреА рд▓рдЪреАрд▓рд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ рдЕрдкрдирд╛ рдПрдиреЛрдЯреЗрд╢рди рд▓рд┐рдЦрдирд╛, рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЗрддрдиреА рд╕рд░рд▓ рд▓рдЧрддреА рд╣реИред