Remove obsolete role attributes for tab groups in the reference manual

Since we now use asciidoctor-tabs instead of spring-asciidoctor-backends,
we no longer need the `role="primary"` and `role="secondary"` attributes
for tab groups.

Closes gh-33506
This commit is contained in:
Sam Brannen
2024-09-08 17:20:10 +02:00
parent 761fb8f6c9
commit 4fb70b671a
223 changed files with 1925 additions and 1925 deletions

View File

@@ -58,7 +58,7 @@ The following example shows a simple `MethodInterceptor` implementation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class DebugInterceptor implements MethodInterceptor {
@@ -73,7 +73,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class DebugInterceptor : MethodInterceptor {
@@ -139,7 +139,7 @@ The following example shows a before advice in Spring, which counts all method i
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class CountingBeforeAdvice implements MethodBeforeAdvice {
@@ -157,7 +157,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class CountingBeforeAdvice : MethodBeforeAdvice {
@@ -197,7 +197,7 @@ The following advice is invoked if a `RemoteException` is thrown (including from
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class RemoteThrowsAdvice implements ThrowsAdvice {
@@ -209,7 +209,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class RemoteThrowsAdvice : ThrowsAdvice {
@@ -228,7 +228,7 @@ arguments, and target object. The following advice is invoked if a `ServletExcep
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ServletThrowsAdviceWithArguments implements ThrowsAdvice {
@@ -240,7 +240,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ServletThrowsAdviceWithArguments : ThrowsAdvice {
@@ -259,7 +259,7 @@ methods can be combined in a single class. The following listing shows the final
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static class CombinedThrowsAdvice implements ThrowsAdvice {
@@ -275,7 +275,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class CombinedThrowsAdvice : ThrowsAdvice {
@@ -326,7 +326,7 @@ not thrown exceptions:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class CountingAfterReturningAdvice implements AfterReturningAdvice {
@@ -345,7 +345,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class CountingAfterReturningAdvice : AfterReturningAdvice {
@@ -420,7 +420,7 @@ introduce the following interface to one or more objects:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public interface Lockable {
void lock();
@@ -431,7 +431,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
interface Lockable {
fun lock()
@@ -480,7 +480,7 @@ The following example shows the example `LockMixin` class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class LockMixin extends DelegatingIntroductionInterceptor implements Lockable {
@@ -510,7 +510,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class LockMixin : DelegatingIntroductionInterceptor(), Lockable {
@@ -556,7 +556,7 @@ The following example shows our `LockMixinAdvisor` class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class LockMixinAdvisor extends DefaultIntroductionAdvisor {
@@ -568,7 +568,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class LockMixinAdvisor : DefaultIntroductionAdvisor(LockMixin(), Lockable::class.java)
----

View File

@@ -10,7 +10,7 @@ following methods:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Advisor[] getAdvisors();
@@ -35,7 +35,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun getAdvisors(): Array<Advisor>
@@ -90,7 +90,7 @@ manipulating its advice:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Advised advised = (Advised) myObject;
Advisor[] advisors = advised.getAdvisors();
@@ -110,7 +110,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val advised = myObject as Advised
val advisors = advised.advisors

View File

@@ -196,14 +196,14 @@ follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Person person = (Person) factory.getBean("person");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val person = factory.getBean("person") as Person
----

View File

@@ -187,7 +187,7 @@ following example shows how to subclass `StaticMethodMatcherPointcut`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
class TestStaticPointcut extends StaticMethodMatcherPointcut {
@@ -199,7 +199,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class TestStaticPointcut : StaticMethodMatcherPointcut() {

View File

@@ -12,7 +12,7 @@ interceptor and one advisor:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ProxyFactory factory = new ProxyFactory(myBusinessInterfaceImpl);
factory.addAdvice(myMethodInterceptor);
@@ -22,7 +22,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val factory = ProxyFactory(myBusinessInterfaceImpl)
factory.addAdvice(myMethodInterceptor)

View File

@@ -38,7 +38,7 @@ You can change the target by using the `swap()` method on HotSwappableTargetSour
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
HotSwappableTargetSource swapper = (HotSwappableTargetSource) beanFactory.getBean("swapper");
Object oldTarget = swapper.swap(newTarget);
@@ -46,7 +46,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val swapper = beanFactory.getBean("swapper") as HotSwappableTargetSource
val oldTarget = swapper.swap(newTarget)
@@ -152,7 +152,7 @@ The cast is defined as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
PoolingConfig conf = (PoolingConfig) beanFactory.getBean("businessObject");
System.out.println("Max pool size is " + conf.getMaxSize());
@@ -160,7 +160,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val conf = beanFactory.getBean("businessObject") as PoolingConfig
println("Max pool size is " + conf.maxSize)

View File

@@ -15,7 +15,7 @@ The basic usage for this class is very simple, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
// create a factory that can generate a proxy for the given target object
AspectJProxyFactory factory = new AspectJProxyFactory(targetObject);
@@ -34,7 +34,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
// create a factory that can generate a proxy for the given target object
val factory = AspectJProxyFactory(targetObject)

View File

@@ -17,7 +17,7 @@ The following example uses an inline pointcut expression.
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@@ -34,7 +34,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.Before
@@ -57,7 +57,7 @@ as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@@ -74,7 +74,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.Before
@@ -101,7 +101,7 @@ You can declare it by using the `@AfterReturning` annotation.
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.AfterReturning;
@@ -118,7 +118,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.AfterReturning
@@ -146,7 +146,7 @@ access, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.AfterReturning;
@@ -165,7 +165,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.AfterReturning
@@ -204,7 +204,7 @@ following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.AfterThrowing;
@@ -221,7 +221,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.AfterThrowing
@@ -247,7 +247,7 @@ The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.AfterThrowing;
@@ -266,7 +266,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.AfterThrowing
@@ -311,7 +311,7 @@ purposes. The following example shows how to use after finally advice:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.After;
@@ -328,7 +328,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.After
@@ -417,7 +417,7 @@ The following example shows how to use around advice:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Around;
@@ -438,7 +438,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.Around
@@ -500,7 +500,7 @@ You could write the following:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Before("execution(* com.xyz.dao.*.*(..)) && args(account,..)")
public void validateAccount(Account account) {
@@ -510,7 +510,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Before("execution(* com.xyz.dao.*.*(..)) && args(account,..)")
fun validateAccount(account: Account) {
@@ -533,7 +533,7 @@ from the advice. This would look as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Pointcut("execution(* com.xyz.dao.*.*(..)) && args(account,..)")
private void accountDataAccessOperation(Account account) {}
@@ -546,7 +546,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Pointcut("execution(* com.xyz.dao.*.*(..)) && args(account,..)")
private fun accountDataAccessOperation(account: Account) {
@@ -572,7 +572,7 @@ The following shows the definition of the `@Auditable` annotation:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@@ -583,7 +583,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION)
@@ -597,7 +597,7 @@ The following shows the advice that matches the execution of `@Auditable` method
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Before("com.xyz.Pointcuts.publicMethod() && @annotation(auditable)") // <1>
public void audit(Auditable auditable) {
@@ -609,7 +609,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Before("com.xyz.Pointcuts.publicMethod() && @annotation(auditable)") // <1>
fun audit(auditable: Auditable) {
@@ -630,7 +630,7 @@ you have a generic type like the following:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public interface Sample<T> {
void sampleGenericMethod(T param);
@@ -640,7 +640,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
interface Sample<T> {
fun sampleGenericMethod(param: T)
@@ -656,7 +656,7 @@ tying the advice parameter to the parameter type for which you want to intercept
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Before("execution(* ..Sample+.sampleGenericMethod(*)) && args(param)")
public void beforeSampleMethod(MyType param) {
@@ -666,7 +666,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Before("execution(* ..Sample+.sampleGenericMethod(*)) && args(param)")
fun beforeSampleMethod(param: MyType) {
@@ -682,7 +682,7 @@ pointcut as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Before("execution(* ..Sample+.sampleGenericCollectionMethod(*)) && args(param)")
public void beforeSampleMethod(Collection<MyType> param) {
@@ -692,7 +692,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Before("execution(* ..Sample+.sampleGenericCollectionMethod(*)) && args(param)")
fun beforeSampleMethod(param: Collection<MyType>) {
@@ -756,7 +756,7 @@ The following example shows how to use the `argNames` attribute:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Before(
value = "com.xyz.Pointcuts.publicMethod() && target(bean) && @annotation(auditable)", // <1>
@@ -771,7 +771,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Before(
value = "com.xyz.Pointcuts.publicMethod() && target(bean) && @annotation(auditable)", // <1>
@@ -794,7 +794,7 @@ point object, the `argNames` attribute does not need to include it:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Before(
value = "com.xyz.Pointcuts.publicMethod() && target(bean) && @annotation(auditable)", // <1>
@@ -809,7 +809,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Before(
value = "com.xyz.Pointcuts.publicMethod() && target(bean) && @annotation(auditable)", // <1>
@@ -833,7 +833,7 @@ the `argNames` attribute:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Before("com.xyz.Pointcuts.publicMethod()") // <1>
public void audit(JoinPoint jp) {
@@ -844,7 +844,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Before("com.xyz.Pointcuts.publicMethod()") // <1>
fun audit(jp: JoinPoint) {
@@ -867,7 +867,7 @@ The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Around("execution(List<Account> find*(..)) && " +
"com.xyz.CommonPointcuts.inDataAccessLayer() && " +
@@ -882,7 +882,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Around("execution(List<Account> find*(..)) && " +
"com.xyz.CommonPointcuts.inDataAccessLayer() && " +

View File

@@ -17,7 +17,7 @@ annotation. Consider the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Aspect("perthis(execution(* com.xyz..service.*.*(..)))")
public class MyAspect {
@@ -33,7 +33,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Aspect("perthis(execution(* com.xyz..service.*.*(..)))")
class MyAspect {

View File

@@ -15,7 +15,7 @@ interfaces also implement the `UsageTracked` interface (e.g. for statistics via
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Aspect
public class UsageTracking {
@@ -33,7 +33,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Aspect
class UsageTracking {
@@ -63,14 +63,14 @@ you would write the following:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
UsageTracked usageTracked = context.getBean("myService", UsageTracked.class);
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
val usageTracked = context.getBean<UsageTracked>("myService")
----

View File

@@ -19,7 +19,7 @@ matches the execution of any method named `transfer`:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Pointcut("execution(* transfer(..))") // the pointcut expression
private void anyOldTransfer() {} // the pointcut signature
@@ -27,7 +27,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Pointcut("execution(* transfer(..))") // the pointcut expression
private fun anyOldTransfer() {} // the pointcut signature
@@ -150,7 +150,7 @@ pointcut expressions by name. The following example shows three pointcut express
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz;
@@ -174,7 +174,7 @@ trading module.
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz
@@ -217,7 +217,7 @@ expressions for this purpose. Such a class typically resembles the following
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary",chomp="-packages",fold="none"]
[source,java,indent=0,subs="verbatim",chomp="-packages",fold="none"]
----
package com.xyz;
@@ -279,7 +279,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages",fold="none"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages",fold="none"]
----
package com.xyz

View File

@@ -59,7 +59,7 @@ For example, in the @AspectJ style you can write something like the following:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Pointcut("execution(* get*())")
public void propertyAccess() {}
@@ -73,7 +73,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Pointcut("execution(* get*())")
fun propertyAccess() {}

View File

@@ -76,7 +76,7 @@ as the following code snippet shows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public class SimplePojo implements Pojo {
@@ -93,7 +93,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
class SimplePojo : Pojo {
@@ -118,7 +118,7 @@ image::aop-proxy-plain-pojo-call.png[]
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public class Main {
@@ -132,7 +132,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
fun main() {
val pojo = SimplePojo()
@@ -151,7 +151,7 @@ image::aop-proxy-call.png[]
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public class Main {
@@ -169,7 +169,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
fun main() {
val factory = ProxyFactory(SimplePojo())
@@ -213,7 +213,7 @@ Use `AopContext.currentProxy()` ::
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public class SimplePojo implements Pojo {
@@ -230,7 +230,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
class SimplePojo : Pojo {
@@ -255,7 +255,7 @@ configured to expose the proxy, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public class Main {
@@ -274,7 +274,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
fun main() {
val factory = ProxyFactory(SimplePojo())

View File

@@ -136,7 +136,7 @@ parameters of the matching names, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public void monitor(Object service) {
// ...
@@ -145,7 +145,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
fun monitor(service: Any) {
// ...
@@ -282,14 +282,14 @@ example, you can declare the method signature as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public void doAccessCheck(Object retVal) {...
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
fun doAccessCheck(retVal: Any) {...
----
@@ -340,14 +340,14 @@ The type of this parameter constrains matching in the same way as described for
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public void doRecoveryActions(DataAccessException dataAccessEx) {...
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
fun doRecoveryActions(dataAccessEx: DataAccessException) {...
----
@@ -421,7 +421,7 @@ The implementation of the `doBasicProfiling` advice can be exactly the same as i
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
// start stopwatch
@@ -433,7 +433,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
fun doBasicProfiling(pjp: ProceedingJoinPoint): Any? {
// start stopwatch
@@ -475,7 +475,7 @@ some around advice used in conjunction with a number of strongly typed parameter
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz.service;
@@ -494,7 +494,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz.service
@@ -521,7 +521,7 @@ proceed with the method call. The presence of this parameter is an indication th
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz;
@@ -545,7 +545,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz
@@ -610,7 +610,7 @@ Consider the following driver script:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public class Boot {
@@ -624,7 +624,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
fun main() {
val ctx = ClassPathXmlApplicationContext("beans.xml")
@@ -714,7 +714,7 @@ The class that backs the `usageTracking` bean would then contain the following m
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public void recordUsage(UsageTracked usageTracked) {
usageTracked.incrementUseCount();
@@ -723,7 +723,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
fun recordUsage(usageTracked: UsageTracked) {
usageTracked.incrementUseCount()
@@ -742,14 +742,14 @@ following:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
UsageTracked usageTracked = context.getBean("myService", UsageTracked.class);
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
val usageTracked = context.getBean("myService", UsageTracked.class)
----
@@ -829,7 +829,7 @@ call `proceed` multiple times. The following listing shows the basic aspect impl
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
public class ConcurrentOperationExecutor implements Ordered {
@@ -869,7 +869,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
class ConcurrentOperationExecutor : Ordered {
@@ -953,7 +953,7 @@ to annotate the implementation of service operations, as the following example s
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Retention(RetentionPolicy.RUNTIME)
// marker annotation
@@ -963,7 +963,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Retention(AnnotationRetention.RUNTIME)
// marker annotation

View File

@@ -36,7 +36,7 @@ following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz.domain;
@@ -50,7 +50,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz.domain
@@ -84,7 +84,7 @@ can do so directly in the annotation, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz.domain;
@@ -98,7 +98,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz.domain
@@ -153,14 +153,14 @@ available for use in the body of the constructors, you need to define this on th
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
@Configurable(preConstruction = true)
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Configurable(preConstruction = true)
----
@@ -413,7 +413,7 @@ It is a time-based profiler that uses the @AspectJ-style of aspect declaration:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz;
@@ -446,7 +446,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz
@@ -544,7 +544,7 @@ driver class with a `main(..)` method to demonstrate the LTW in action:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz;
@@ -566,7 +566,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz
@@ -625,7 +625,7 @@ result:
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz;
@@ -647,7 +647,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages"]
----
package com.xyz

View File

@@ -140,7 +140,7 @@ Taking our previous example, let's assume that `DataSourceConfiguration` is as f
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration(proxyBeanMethods = false)
public class DataSourceConfiguration {
@@ -155,7 +155,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration(proxyBeanMethods = false)
class DataSourceConfiguration {
@@ -176,7 +176,7 @@ The AOT engine will convert the configuration class above to code similar to the
======
Java::
+
[source,java,indent=0,role="primary"]
[source,java,indent=0]
----
/**
* Bean definitions for {@link DataSourceConfiguration}
@@ -278,7 +278,7 @@ Consider the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration(proxyBeanMethods = false)
public class UserConfiguration {
@@ -302,7 +302,7 @@ The example above should be rewritten as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration(proxyBeanMethods = false)
public class UserConfiguration {
@@ -365,7 +365,7 @@ Consider the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ClientFactoryBean<T extends AbstractClient> implements FactoryBean<T> {
// ...
@@ -379,7 +379,7 @@ A concrete client declaration should provide a resolved generic for the client,
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration(proxyBeanMethods = false)
public class UserConfiguration {
@@ -405,7 +405,7 @@ The following example showcases a basic definition:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
RootBeanDefinition beanDefinition = new RootBeanDefinition(ClientFactoryBean.class);
beanDefinition.setTargetType(ResolvableType.forClassWithGenerics(ClientFactoryBean.class, MyClient.class));
@@ -423,7 +423,7 @@ The JPA persistence unit has to be known upfront for certain optimizations to ap
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Bean
LocalContainerEntityManagerFactoryBean customDBEntityManagerFactory(DataSource dataSource) {
@@ -442,7 +442,7 @@ factory bean definition, as shown by the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Bean
PersistenceManagedTypes persistenceManagedTypes(ResourceLoader resourceLoader) {
@@ -475,7 +475,7 @@ The following example makes sure that `config/app.properties` can be loaded from
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
runtimeHints.resources().registerPattern("config/app.properties");
----

View File

@@ -145,7 +145,7 @@ use the `NamespaceHandlerSupport` class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.springframework.samples.xml;
@@ -161,7 +161,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.springframework.samples.xml
@@ -202,7 +202,7 @@ we can parse our custom XML content, as you can see in the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.springframework.samples.xml;
@@ -240,7 +240,7 @@ single `BeanDefinition` represents.
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.springframework.samples.xml
@@ -416,7 +416,7 @@ The following listing shows the `Component` class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo;
@@ -449,7 +449,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo
@@ -480,7 +480,7 @@ setter property for the `components` property. The following listing shows such
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo;
@@ -522,7 +522,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo
@@ -598,7 +598,7 @@ we then create a custom `NamespaceHandler`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo;
@@ -614,7 +614,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo
@@ -637,7 +637,7 @@ listing shows our custom `BeanDefinitionParser` implementation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo;
@@ -688,7 +688,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo
@@ -787,7 +787,7 @@ JCache-initializing `BeanDefinition`. The following listing shows our `JCacheIni
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo;
@@ -807,7 +807,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo
@@ -843,7 +843,7 @@ Next, we need to create the associated `NamespaceHandler`, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo;
@@ -861,7 +861,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo
@@ -886,7 +886,7 @@ The following listing shows our `BeanDefinitionDecorator` implementation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo;
@@ -942,7 +942,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo

View File

@@ -121,7 +121,7 @@ The following example enumeration shows how easy injecting an enum value is:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package jakarta.persistence;
@@ -134,7 +134,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package jakarta.persistence
@@ -152,7 +152,7 @@ Now consider the following setter of type `PersistenceContextType` and the corre
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package example;
@@ -168,7 +168,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package example

View File

@@ -15,7 +15,7 @@ primary `MovieCatalog`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class MovieConfiguration {
@@ -33,7 +33,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class MovieConfiguration {
@@ -58,7 +58,7 @@ bean is left, it is effectively primary as well:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class MovieConfiguration {
@@ -76,7 +76,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class MovieConfiguration {
@@ -100,7 +100,7 @@ With both variants of the preceding configuration, the following
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -113,7 +113,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {

View File

@@ -14,7 +14,7 @@ this can be a plain descriptive value, as shown in the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -28,7 +28,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {
@@ -50,7 +50,7 @@ method parameters, as shown in the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -71,7 +71,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {
@@ -198,7 +198,7 @@ provide the `@Qualifier` annotation within your definition, as the following exa
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@@ -211,7 +211,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.FIELD, AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
@@ -229,7 +229,7 @@ following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -250,7 +250,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {
@@ -322,7 +322,7 @@ the simple annotation, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@@ -333,7 +333,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.FIELD, AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
@@ -351,7 +351,7 @@ following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -366,7 +366,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {
@@ -406,7 +406,7 @@ consider the following annotation definition:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@@ -421,7 +421,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.FIELD, AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
@@ -438,7 +438,7 @@ In this case `Format` is an enum, defined as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public enum Format {
VHS, DVD, BLURAY
@@ -447,7 +447,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
enum class Format {
VHS, DVD, BLURAY
@@ -464,7 +464,7 @@ for both attributes: `genre` and `format`, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -490,7 +490,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {

View File

@@ -13,7 +13,7 @@ You can apply the `@Autowired` annotation to constructors, as the following exam
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -30,7 +30,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender @Autowired constructor(
private val customerPreferenceDao: CustomerPreferenceDao)
@@ -54,7 +54,7 @@ as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleMovieLister {
@@ -71,7 +71,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SimpleMovieLister {
@@ -91,7 +91,7 @@ arguments, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -112,7 +112,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {
@@ -139,7 +139,7 @@ following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -159,7 +159,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender @Autowired constructor(
private val customerPreferenceDao: CustomerPreferenceDao) {
@@ -226,7 +226,7 @@ expects an array of that type, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -239,7 +239,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {
@@ -257,7 +257,7 @@ The same applies for typed collections, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -274,7 +274,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {
@@ -319,7 +319,7 @@ corresponding bean names, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -336,7 +336,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {
@@ -361,7 +361,7 @@ non-required (i.e., by setting the `required` attribute in `@Autowired` to `fals
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleMovieLister {
@@ -378,7 +378,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SimpleMovieLister {
@@ -452,7 +452,7 @@ support:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleMovieLister {
@@ -465,7 +465,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SimpleMovieLister {
@@ -488,7 +488,7 @@ an `ApplicationContext` object:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -504,7 +504,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {

View File

@@ -9,7 +9,7 @@ configuration:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class MyConfiguration {
@@ -28,7 +28,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class MyConfiguration {
@@ -50,7 +50,7 @@ used as a qualifier, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Autowired
private Store<String> s1; // <String> qualifier, injects the stringStore bean
@@ -61,7 +61,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Autowired
private lateinit var s1: Store<String> // <String> qualifier, injects the stringStore bean
@@ -78,7 +78,7 @@ following example autowires a generic `List`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// Inject all Store beans as long as they have an <Integer> generic
// Store<String> beans will not appear in this list
@@ -88,7 +88,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// Inject all Store beans as long as they have an <Integer> generic
// Store<String> beans will not appear in this list

View File

@@ -17,7 +17,7 @@ cleared upon destruction:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class CachingMovieLister {
@@ -35,7 +35,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class CachingMovieLister {

View File

@@ -15,7 +15,7 @@ as demonstrated in the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleMovieLister {
@@ -31,7 +31,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SimpleMovieLister {
@@ -54,7 +54,7 @@ named `movieFinder` injected into its setter method:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleMovieLister {
@@ -69,7 +69,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SimpleMovieLister {
@@ -103,7 +103,7 @@ named "customerPreferenceDao" and then falls back to a primary type match for th
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MovieRecommender {
@@ -124,7 +124,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MovieRecommender {

View File

@@ -7,7 +7,7 @@
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class MovieRecommender {
@@ -22,7 +22,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class MovieRecommender(@Value("\${catalog.name}") private val catalog: String)
@@ -35,7 +35,7 @@ With the following configuration:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@PropertySource("classpath:application.properties")
@@ -44,7 +44,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@PropertySource("classpath:application.properties")
@@ -71,7 +71,7 @@ example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -85,7 +85,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -117,7 +117,7 @@ It is possible to provide a default value as following:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class MovieRecommender {
@@ -132,7 +132,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class MovieRecommender(@Value("\${catalog.name:defaultCatalog}") private val catalog: String)
@@ -148,7 +148,7 @@ provide conversion support for your own custom type, you can provide your own
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -164,7 +164,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -186,7 +186,7 @@ computed at runtime as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class MovieRecommender {
@@ -201,7 +201,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class MovieRecommender(
@@ -215,7 +215,7 @@ SpEL also enables the use of more complex data structures:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class MovieRecommender {
@@ -231,7 +231,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class MovieRecommender(

View File

@@ -110,14 +110,14 @@ as the local file system, the Java `CLASSPATH`, and so on.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val context = ClassPathXmlApplicationContext("services.xml", "daos.xml")
----
@@ -294,7 +294,7 @@ example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
@@ -308,7 +308,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -331,14 +331,14 @@ The following example shows Groovy configuration:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext context = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val context = GenericGroovyApplicationContext("services.groovy", "daos.groovy")
----
@@ -352,7 +352,7 @@ example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
GenericApplicationContext context = new GenericApplicationContext();
new XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml");
@@ -361,7 +361,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val context = GenericApplicationContext()
XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml")
@@ -376,7 +376,7 @@ example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
GenericApplicationContext context = new GenericApplicationContext();
new GroovyBeanDefinitionReader(context).loadBeanDefinitions("services.groovy", "daos.groovy");
@@ -385,7 +385,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val context = GenericApplicationContext()
GroovyBeanDefinitionReader(context).loadBeanDefinitions("services.groovy", "daos.groovy")

View File

@@ -90,7 +90,7 @@ you need to programmatically call `addBeanPostProcessor`, as the following examp
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
// populate the factory with bean definitions
@@ -104,7 +104,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val factory = DefaultListableBeanFactory()
// populate the factory with bean definitions
@@ -124,7 +124,7 @@ you need to call its `postProcessBeanFactory` method, as the following example s
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
@@ -140,7 +140,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val factory = DefaultListableBeanFactory()
val reader = XmlBeanDefinitionReader(factory)

View File

@@ -59,7 +59,7 @@ is meta-annotated with `@Component`, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@@ -74,7 +74,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.TYPE)
@Retention(AnnotationRetention.RUNTIME)
@@ -103,7 +103,7 @@ customization of the `proxyMode`. The following listing shows the definition of
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@@ -123,7 +123,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@@ -142,7 +142,7 @@ You can then use `@SessionScope` without declaring the `proxyMode` as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Service
@SessionScope
@@ -153,7 +153,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Service
@SessionScope
@@ -169,7 +169,7 @@ You can also override the value for the `proxyMode`, as the following example sh
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Service
@SessionScope(proxyMode = ScopedProxyMode.INTERFACES)
@@ -180,7 +180,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Service
@SessionScope(proxyMode = ScopedProxyMode.INTERFACES)
@@ -207,7 +207,7 @@ are eligible for such autodetection:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Service
public class SimpleMovieLister {
@@ -222,7 +222,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Service
class SimpleMovieLister(private val movieFinder: MovieFinder)
@@ -233,7 +233,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Repository
public class JpaMovieFinder implements MovieFinder {
@@ -243,7 +243,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Repository
class JpaMovieFinder : MovieFinder {
@@ -262,7 +262,7 @@ comma- or semicolon- or space-separated list that includes the parent package of
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = "org.example")
@@ -273,7 +273,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = ["org.example"])
@@ -380,7 +380,7 @@ and using "`stub`" repositories instead:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = "org.example",
@@ -393,7 +393,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = ["org.example"],
@@ -438,7 +438,7 @@ annotated classes. The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class FactoryMethodComponent {
@@ -457,7 +457,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class FactoryMethodComponent {
@@ -493,7 +493,7 @@ support for autowiring of `@Bean` methods. The following example shows how to do
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class FactoryMethodComponent {
@@ -532,7 +532,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class FactoryMethodComponent {
@@ -585,7 +585,7 @@ The following example shows how to use `InjectionPoint`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class FactoryMethodComponent {
@@ -599,7 +599,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class FactoryMethodComponent {
@@ -699,7 +699,7 @@ following component classes were detected, the names would be `myMovieLister` an
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Service("myMovieLister")
public class SimpleMovieLister {
@@ -709,7 +709,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Service("myMovieLister")
class SimpleMovieLister {
@@ -722,7 +722,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Repository
public class MovieFinderImpl implements MovieFinder {
@@ -732,7 +732,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Repository
class MovieFinderImpl : MovieFinder {
@@ -759,7 +759,7 @@ fully qualified class name for the generated bean name. The
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = "org.example", nameGenerator = MyNameGenerator.class)
@@ -770,7 +770,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = ["org.example"], nameGenerator = MyNameGenerator::class)
@@ -806,7 +806,7 @@ scope within the annotation, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Scope("prototype")
@Repository
@@ -817,7 +817,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Scope("prototype")
@Repository
@@ -849,7 +849,7 @@ an annotation and a bean definition shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = "org.example", scopeResolver = MyScopeResolver.class)
@@ -860,7 +860,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = ["org.example"], scopeResolver = MyScopeResolver::class)
@@ -887,7 +887,7 @@ the following configuration results in standard JDK dynamic proxies:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = "org.example", scopedProxy = ScopedProxyMode.INTERFACES)
@@ -898,7 +898,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = ["org.example"], scopedProxy = ScopedProxyMode.INTERFACES)
@@ -934,7 +934,7 @@ technique:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
@Qualifier("Action")
@@ -945,7 +945,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
@Qualifier("Action")
@@ -957,7 +957,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
@Genre("Action")
@@ -968,7 +968,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
@Genre("Action")
@@ -982,7 +982,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
@Offline
@@ -993,7 +993,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
@Offline

View File

@@ -102,7 +102,7 @@ implementations and so can be cast to the `MessageSource` interface.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static void main(String[] args) {
MessageSource resources = new ClassPathXmlApplicationContext("beans.xml");
@@ -113,7 +113,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun main() {
val resources = ClassPathXmlApplicationContext("beans.xml")
@@ -161,7 +161,7 @@ converted into `String` objects and inserted into placeholders in the lookup mes
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class Example {
@@ -181,7 +181,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class Example {
@@ -224,7 +224,7 @@ argument.required=Ebagum lad, the ''{0}'' argument is required, I say, required.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static void main(final String[] args) {
MessageSource resources = new ClassPathXmlApplicationContext("beans.xml");
@@ -236,7 +236,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun main() {
val resources = ClassPathXmlApplicationContext("beans.xml")
@@ -344,7 +344,7 @@ simple class that extends Spring's `ApplicationEvent` base class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class BlockedListEvent extends ApplicationEvent {
@@ -363,7 +363,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class BlockedListEvent(source: Any,
val address: String,
@@ -380,7 +380,7 @@ example shows such a class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class EmailService implements ApplicationEventPublisherAware {
@@ -407,7 +407,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class EmailService : ApplicationEventPublisherAware {
@@ -447,7 +447,7 @@ shows such a class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class BlockedListNotifier implements ApplicationListener<BlockedListEvent> {
@@ -465,7 +465,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class BlockedListNotifier : ApplicationListener<BlockedListEvent> {
@@ -545,7 +545,7 @@ You can register an event listener on any method of a managed bean by using the
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class BlockedListNotifier {
@@ -564,7 +564,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class BlockedListNotifier {
@@ -591,7 +591,7 @@ following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@EventListener({ContextStartedEvent.class, ContextRefreshedEvent.class})
public void handleContextStart() {
@@ -601,7 +601,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@EventListener(ContextStartedEvent::class, ContextRefreshedEvent::class)
fun handleContextStart() {
@@ -621,7 +621,7 @@ The following example shows how our notifier can be rewritten to be invoked only
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@EventListener(condition = "#blEvent.content == 'my-event'")
public void processBlockedListEvent(BlockedListEvent blEvent) {
@@ -631,7 +631,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@EventListener(condition = "#blEvent.content == 'my-event'")
fun processBlockedListEvent(blEvent: BlockedListEvent) {
@@ -677,7 +677,7 @@ method signature to return the event that should be published, as the following
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@EventListener
public ListUpdateEvent handleBlockedListEvent(BlockedListEvent event) {
@@ -688,7 +688,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@EventListener
fun handleBlockedListEvent(event: BlockedListEvent): ListUpdateEvent {
@@ -717,7 +717,7 @@ The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@EventListener
@Async
@@ -728,7 +728,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@EventListener
@Async
@@ -763,7 +763,7 @@ annotation to the method declaration, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@EventListener
@Order(42)
@@ -774,7 +774,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@EventListener
@Order(42)
@@ -797,7 +797,7 @@ can create the following listener definition to receive only `EntityCreatedEvent
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@EventListener
public void onPersonCreated(EntityCreatedEvent<Person> event) {
@@ -807,7 +807,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@EventListener
fun onPersonCreated(event: EntityCreatedEvent<Person>) {
@@ -829,7 +829,7 @@ environment provides. The following event shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class EntityCreatedEvent<T> extends ApplicationEvent implements ResolvableTypeProvider {
@@ -846,7 +846,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class EntityCreatedEvent<T>(entity: T) : ApplicationEvent(entity), ResolvableTypeProvider {
@@ -935,7 +935,7 @@ Here is an example of instrumentation in the `AnnotationConfigApplicationContext
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// create a startup step and start recording
StartupStep scanPackages = getApplicationStartup().start("spring.context.base-packages.scan");
@@ -949,7 +949,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// create a startup step and start recording
val scanPackages = getApplicationStartup().start("spring.context.base-packages.scan")

View File

@@ -11,7 +11,7 @@ To enable load-time weaving, you can add the `@EnableLoadTimeWeaving` to one of
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@EnableLoadTimeWeaving
@@ -21,7 +21,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@EnableLoadTimeWeaving

View File

@@ -298,7 +298,7 @@ The following example shows a class that would work with the preceding bean defi
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ClientService {
private static ClientService clientService = new ClientService();
@@ -312,7 +312,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ClientService private constructor() {
companion object {
@@ -378,7 +378,7 @@ The following example shows the corresponding class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class DefaultServiceLocator {
@@ -392,7 +392,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class DefaultServiceLocator {
companion object {
@@ -428,7 +428,7 @@ The following example shows the corresponding class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class DefaultServiceLocator {
@@ -448,7 +448,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class DefaultServiceLocator {
companion object {

View File

@@ -34,7 +34,7 @@ injection:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleMovieLister {
@@ -52,7 +52,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// a constructor so that the Spring container can inject a MovieFinder
class SimpleMovieLister(private val movieFinder: MovieFinder) {
@@ -77,7 +77,7 @@ being instantiated. Consider the following class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package x.y;
@@ -91,7 +91,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package x.y
@@ -127,7 +127,7 @@ by type without help. Consider the following class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package examples;
@@ -148,7 +148,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package examples
@@ -221,7 +221,7 @@ then have to look as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package examples;
@@ -239,7 +239,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package examples
@@ -265,7 +265,7 @@ on container specific interfaces, base classes, or annotations.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleMovieLister {
@@ -283,7 +283,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SimpleMovieLister {
@@ -440,7 +440,7 @@ The following example shows the corresponding `ExampleBean` class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ExampleBean {
@@ -466,7 +466,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ExampleBean {
lateinit var beanOne: AnotherBean
@@ -503,7 +503,7 @@ The following example shows the corresponding `ExampleBean` class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ExampleBean {
@@ -524,7 +524,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ExampleBean(
private val beanOne: AnotherBean,
@@ -557,7 +557,7 @@ The following example shows the corresponding `ExampleBean` class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ExampleBean {
@@ -581,7 +581,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ExampleBean private constructor() {
companion object {

View File

@@ -21,7 +21,7 @@ shows this approach:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages",fold="none"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages",fold="none"]
----
package fiona.apple;
@@ -60,7 +60,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages",fold="none"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages",fold="none"]
----
package fiona.apple
@@ -137,7 +137,7 @@ the reworked example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages",fold="none"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages",fold="none"]
----
package fiona.apple;
@@ -160,7 +160,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages",fold="none"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages",fold="none"]
----
package fiona.apple
@@ -220,7 +220,7 @@ method through the `@Lookup` annotation, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public abstract class CommandManager {
@@ -237,7 +237,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
abstract class CommandManager {
@@ -260,7 +260,7 @@ declared return type of the lookup method:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public abstract class CommandManager {
@@ -277,7 +277,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
abstract class CommandManager {
@@ -324,7 +324,7 @@ the following class, which has a method called `computeValue` that we want to ov
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MyValueCalculator {
@@ -338,7 +338,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MyValueCalculator {
@@ -358,7 +358,7 @@ interface provides the new method definition, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
/**
* meant to be used to override the existing computeValue(String)
@@ -377,7 +377,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
/**
* meant to be used to override the existing computeValue(String)

View File

@@ -354,7 +354,7 @@ The following Java class and bean definition show how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SomeClass {
@@ -368,7 +368,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SomeClass {
lateinit var accounts: Map<String, Float>
@@ -418,14 +418,14 @@ The preceding example is equivalent to the following Java code:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
exampleBean.setEmail("");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
exampleBean.email = ""
----
@@ -449,14 +449,14 @@ The preceding configuration is equivalent to the following Java code:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
exampleBean.setEmail(null);
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
exampleBean.email = null
----

View File

@@ -43,7 +43,7 @@ Consider the first use case in a practical application that requires a
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Bean
public DataSource dataSource() {
@@ -57,7 +57,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Bean
fun dataSource(): DataSource {
@@ -79,7 +79,7 @@ now looks like the following listing:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Bean(destroyMethod = "")
public DataSource dataSource() throws Exception {
@@ -90,7 +90,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Bean(destroyMethod = "")
fun dataSource(): DataSource {
@@ -128,7 +128,7 @@ can rewrite the `dataSource` configuration as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@Profile("development")
@@ -147,7 +147,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@Profile("development")
@@ -171,7 +171,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@Profile("production")
@@ -188,7 +188,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@Profile("production")
@@ -233,7 +233,7 @@ of creating a custom composed annotation. The following example defines a custom
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@@ -244,7 +244,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
@@ -272,7 +272,7 @@ the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -300,7 +300,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -454,7 +454,7 @@ it programmatically against the `Environment` API which is available through an
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.getEnvironment().setActiveProfiles("development");
@@ -464,7 +464,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = AnnotationConfigApplicationContext().apply {
environment.setActiveProfiles("development")
@@ -491,14 +491,14 @@ activates multiple profiles:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ctx.getEnvironment().setActiveProfiles("profile1", "profile2");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
ctx.getEnvironment().setActiveProfiles("profile1", "profile2")
----
@@ -523,7 +523,7 @@ the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@Profile("default")
@@ -541,7 +541,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@Profile("default")
@@ -578,7 +578,7 @@ hierarchy of property sources. Consider the following listing:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext ctx = new GenericApplicationContext();
Environment env = ctx.getEnvironment();
@@ -588,7 +588,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = GenericApplicationContext()
val env = ctx.environment
@@ -643,7 +643,7 @@ current `Environment`. The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ConfigurableApplicationContext ctx = new GenericApplicationContext();
MutablePropertySources sources = ctx.getEnvironment().getPropertySources();
@@ -652,7 +652,7 @@ sources.addFirst(new MyPropertySource());
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = GenericApplicationContext()
val sources = ctx.environment.propertySources
@@ -684,7 +684,7 @@ a call to `testBean.getName()` returns `myTestBean`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@PropertySource("classpath:/com/myco/app.properties")
@@ -704,7 +704,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@PropertySource("classpath:/com/myco/app.properties")
@@ -729,7 +729,7 @@ environment, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@PropertySource("classpath:/com/${my.placeholder:default/path}/app.properties")
@@ -749,7 +749,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@PropertySource("classpath:/com/\${my.placeholder:default/path}/app.properties")

View File

@@ -123,7 +123,7 @@ The following listing shows the custom `BeanPostProcessor` implementation class
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package scripting;
@@ -145,7 +145,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package scripting
@@ -205,7 +205,7 @@ The following Java application runs the preceding code and configuration:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -224,7 +224,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean

View File

@@ -72,7 +72,7 @@ no-argument signature. With Java configuration, you can use the `initMethod` att
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ExampleBean {
@@ -84,7 +84,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ExampleBean {
@@ -107,7 +107,7 @@ The preceding example has almost exactly the same effect as the following exampl
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class AnotherExampleBean implements InitializingBean {
@@ -120,7 +120,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class AnotherExampleBean : InitializingBean {
@@ -187,7 +187,7 @@ xref:core/beans/java/bean-annotation.adoc#beans-java-lifecycle-callbacks[Receivi
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ExampleBean {
@@ -199,7 +199,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ExampleBean {
@@ -221,7 +221,7 @@ The preceding definition has almost exactly the same effect as the following def
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class AnotherExampleBean implements DisposableBean {
@@ -234,7 +234,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class AnotherExampleBean : DisposableBean {
@@ -295,7 +295,7 @@ following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class DefaultBlogService implements BlogService {
@@ -316,7 +316,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class DefaultBlogService : BlogService {
@@ -551,7 +551,7 @@ declared on the `ConfigurableApplicationContext` interface, as the following exa
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -573,7 +573,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.context.support.ClassPathXmlApplicationContext

View File

@@ -251,7 +251,7 @@ to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@RequestScope
@Component
@@ -262,7 +262,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@RequestScope
@Component
@@ -301,7 +301,7 @@ When using annotation-driven components or Java configuration, you can use the
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@SessionScope
@Component
@@ -312,7 +312,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@SessionScope
@Component
@@ -350,7 +350,7 @@ following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@ApplicationScope
@Component
@@ -361,7 +361,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@ApplicationScope
@Component
@@ -584,14 +584,14 @@ underlying scope:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Object get(String name, ObjectFactory<?> objectFactory)
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun get(name: String, objectFactory: ObjectFactory<*>): Any
----
@@ -606,14 +606,14 @@ the underlying scope:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Object remove(String name)
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun remove(name: String): Any
----
@@ -626,14 +626,14 @@ destroyed or when the specified object in the scope is destroyed:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
void registerDestructionCallback(String name, Runnable destructionCallback)
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun registerDestructionCallback(name: String, destructionCallback: Runnable)
----
@@ -648,14 +648,14 @@ The following method obtains the conversation identifier for the underlying scop
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
String getConversationId()
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun getConversationId(): String
----
@@ -677,14 +677,14 @@ method to register a new `Scope` with the Spring container:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
void registerScope(String scopeName, Scope scope);
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun registerScope(scopeName: String, scope: Scope)
----
@@ -710,7 +710,7 @@ implementations.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Scope threadScope = new SimpleThreadScope();
beanFactory.registerScope("thread", threadScope);
@@ -718,7 +718,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val threadScope = SimpleThreadScope()
beanFactory.registerScope("thread", threadScope)

View File

@@ -19,7 +19,7 @@ The simplest possible `@Configuration` class reads as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -33,7 +33,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {

View File

@@ -25,7 +25,7 @@ the method name. The following example shows a `@Bean` method declaration:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -39,7 +39,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -75,7 +75,7 @@ configurations by implementing interfaces with bean definitions on default metho
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public interface BaseConfig {
@@ -99,7 +99,7 @@ return type, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -113,7 +113,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -153,7 +153,7 @@ parameter, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -167,7 +167,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -211,7 +211,7 @@ on the `bean` element, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class BeanOne {
@@ -244,7 +244,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class BeanOne {
@@ -291,7 +291,7 @@ The following example shows how to prevent an automatic destruction callback for
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Bean(destroyMethod = "")
public DataSource dataSource() throws NamingException {
@@ -301,7 +301,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Bean(destroyMethod = "")
fun dataSource(): DataSource {
@@ -326,7 +326,7 @@ following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -344,7 +344,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -382,7 +382,7 @@ as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class MyConfiguration {
@@ -397,7 +397,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class MyConfiguration {
@@ -431,7 +431,7 @@ it resembles the following:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// an HTTP Session-scoped bean exposed as a proxy
@Bean
@@ -451,7 +451,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// an HTTP Session-scoped bean exposed as a proxy
@Bean
@@ -479,7 +479,7 @@ as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -493,7 +493,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -517,7 +517,7 @@ The following example shows how to set a number of aliases for a bean:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -531,7 +531,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -559,7 +559,7 @@ annotation, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -574,7 +574,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {

View File

@@ -16,7 +16,7 @@ another configuration class, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class ConfigA {
@@ -40,7 +40,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class ConfigA {
@@ -67,7 +67,7 @@ following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigB.class);
@@ -80,7 +80,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -123,7 +123,7 @@ classes, each depending on beans declared in the others:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class ServiceConfig {
@@ -163,7 +163,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -234,7 +234,7 @@ The following example shows how one bean can be autowired to another bean:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class ServiceConfig {
@@ -283,7 +283,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -353,7 +353,7 @@ configuration classes themselves. The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class ServiceConfig {
@@ -371,7 +371,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class ServiceConfig {
@@ -397,7 +397,7 @@ abstract class-based `@Configuration` classes. Consider the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class ServiceConfig {
@@ -447,7 +447,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -570,7 +570,7 @@ method that returns `true` or `false`. For example, the following listing shows
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
@@ -590,7 +590,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
override fun matches(context: ConditionContext, metadata: AnnotatedTypeMetadata): Boolean {
// Read the @Profile annotation attributes
@@ -649,7 +649,7 @@ The following example shows the `AppConfig` configuration class in Java and Kotl
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -671,7 +671,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -723,7 +723,7 @@ jdbc.password=
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:/com/acme/system-test-config.xml");
@@ -734,7 +734,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun main() {
val ctx = ClassPathXmlApplicationContext("classpath:/com/acme/system-test-config.xml")
@@ -794,7 +794,7 @@ annotation to achieve "`Java-centric`" configuration that uses XML as needed:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ImportResource("classpath:/com/acme/properties-config.xml")
@@ -829,7 +829,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ImportResource("classpath:/com/acme/properties-config.xml")
@@ -883,7 +883,7 @@ jdbc.password=
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
@@ -894,7 +894,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean

View File

@@ -17,7 +17,7 @@ as having one bean method call another, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -36,7 +36,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {
@@ -72,7 +72,7 @@ following example shows how to use lookup method injection:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public abstract class CommandManager {
public Object process(Object commandState) {
@@ -90,7 +90,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
abstract class CommandManager {
fun process(commandState: Any): Any {
@@ -115,7 +115,7 @@ the abstract `createCommand()` method is overridden in such a way that it looks
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Bean
@Scope("prototype")
@@ -139,7 +139,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Bean
@Scope("prototype")
@@ -172,7 +172,7 @@ Consider the following example, which shows a `@Bean` annotated method being cal
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class AppConfig {
@@ -200,7 +200,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class AppConfig {

View File

@@ -27,7 +27,7 @@ XML-free usage of the Spring container, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
@@ -38,7 +38,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -58,7 +58,7 @@ as input to the constructor, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(MyServiceImpl.class, Dependency1.class, Dependency2.class);
@@ -69,7 +69,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -97,7 +97,7 @@ example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
@@ -111,7 +111,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -136,7 +136,7 @@ To enable component scanning, you can annotate your `@Configuration` class as fo
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = "com.acme") // <1>
@@ -148,7 +148,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = ["com.acme"]) // <1>
@@ -183,7 +183,7 @@ following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
@@ -195,7 +195,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun main() {
val ctx = AnnotationConfigApplicationContext()

View File

@@ -33,7 +33,7 @@ Instead of `@Autowired`, you can use `@jakarta.inject.Inject` as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject;
@@ -55,7 +55,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject
@@ -83,7 +83,7 @@ preceding example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject;
import jakarta.inject.Provider;
@@ -106,7 +106,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject
@@ -131,7 +131,7 @@ you should use the `@Named` annotation, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject;
import jakarta.inject.Named;
@@ -151,7 +151,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject
import jakarta.inject.Named
@@ -190,7 +190,7 @@ a `required` attribute. The following pair of examples show how to use `@Inject`
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleMovieLister {
@@ -203,7 +203,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SimpleMovieLister {
@@ -225,7 +225,7 @@ as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject;
import jakarta.inject.Named;
@@ -246,7 +246,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject
import jakarta.inject.Named
@@ -269,7 +269,7 @@ It is very common to use `@Component` without specifying a name for the componen
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject;
import jakarta.inject.Named;
@@ -290,7 +290,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import jakarta.inject.Inject
import jakarta.inject.Named
@@ -313,7 +313,7 @@ exact same way as when you use Spring annotations, as the following example show
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = "org.example")
@@ -324,7 +324,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
@ComponentScan(basePackages = ["org.example"])

View File

@@ -144,7 +144,7 @@ a serialization error occurs while populating the buffer with data. For example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
DataBuffer buffer = factory.allocateBuffer();
boolean release = true;
@@ -162,7 +162,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val buffer = factory.allocateBuffer()
var release = true

View File

@@ -12,7 +12,7 @@ expression, `Hello World`.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Hello World'"); // <1>
@@ -22,7 +22,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val exp = parser.parseExpression("'Hello World'") // <1>
@@ -51,7 +51,7 @@ literal, `Hello World`.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Hello World'.concat('!')"); // <1>
@@ -61,7 +61,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val exp = parser.parseExpression("'Hello World'.concat('!')") // <1>
@@ -77,7 +77,7 @@ string literal, `Hello World`.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
@@ -89,7 +89,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
@@ -110,7 +110,7 @@ The following example shows how to use dot notation to get the length of a strin
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
@@ -122,7 +122,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
@@ -140,7 +140,7 @@ example shows.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("new String('hello world').toUpperCase()"); // <1>
@@ -150,7 +150,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val exp = parser.parseExpression("new String('hello world').toUpperCase()") // <1>
@@ -173,7 +173,7 @@ reference the `name` property in a boolean expression.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// Create and set a calendar
GregorianCalendar c = new GregorianCalendar();
@@ -195,7 +195,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// Create and set a calendar
val c = GregorianCalendar()
@@ -275,7 +275,7 @@ being placed in it. The following example shows how to do so.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
class Simple {
public List<Boolean> booleanList = new ArrayList<>();
@@ -296,7 +296,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class Simple {
var booleanList: MutableList<Boolean> = ArrayList()
@@ -339,7 +339,7 @@ automatically grow a `List`.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
class Demo {
public List<String> list;
@@ -364,7 +364,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class Demo {
var list: List<String>? = null
@@ -470,7 +470,7 @@ following example shows how to do so.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
SpelParserConfiguration config = new SpelParserConfiguration(SpelCompilerMode.IMMEDIATE,
this.getClass().getClassLoader());
@@ -486,7 +486,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val config = SpelParserConfiguration(SpelCompilerMode.IMMEDIATE,
this.javaClass.classLoader)

View File

@@ -9,7 +9,7 @@ This section lists the classes used in the examples throughout this chapter.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.spring.samples.spel.inventor;
@@ -84,7 +84,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.spring.samples.spel.inventor
@@ -103,7 +103,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.spring.samples.spel.inventor;
@@ -141,7 +141,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.spring.samples.spel.inventor
@@ -155,7 +155,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.spring.samples.spel.inventor;
@@ -200,7 +200,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.spring.samples.spel.inventor

View File

@@ -8,7 +8,7 @@ to have the array populated at construction time. The following example shows ho
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
int[] numbers1 = (int[]) parser.parseExpression("new int[4]").getValue(context);
@@ -21,7 +21,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val numbers1 = parser.parseExpression("new int[4]").getValue(context) as IntArray

View File

@@ -9,7 +9,7 @@ to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
@@ -22,7 +22,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val context = StandardEvaluationContext()
@@ -47,7 +47,7 @@ symbol. The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
@@ -60,7 +60,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val context = StandardEvaluationContext()

View File

@@ -11,7 +11,7 @@ list. The following example uses projection to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// evaluates to ["Smiljan", "Idvor"]
List placesOfBirth = parser.parseExpression("members.![placeOfBirth.city]")
@@ -20,7 +20,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// evaluates to ["Smiljan", "Idvor"]
val placesOfBirth = parser.parseExpression("members.![placeOfBirth.city]")

View File

@@ -12,7 +12,7 @@ selection lets us easily get a list of Serbian inventors, as the following examp
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
List<Inventor> list = (List<Inventor>) parser.parseExpression(
"members.?[nationality == 'Serbian']").getValue(societyContext);
@@ -20,7 +20,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val list = parser.parseExpression(
"members.?[nationality == 'Serbian']").getValue(societyContext) as List<Inventor>
@@ -41,14 +41,14 @@ than 27:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Map newMap = parser.parseExpression("#map.?[value < 27]").getValue(Map.class);
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val newMap = parser.parseExpression("#map.?[value < 27]").getValue() as Map
----

View File

@@ -10,7 +10,7 @@ qualified class name for all types except those located in the `java.lang` packa
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Inventor einstein = p.parseExpression(
"new org.spring.samples.spel.inventor.Inventor('Albert Einstein', 'German')")
@@ -24,7 +24,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val einstein = p.parseExpression(
"new org.spring.samples.spel.inventor.Inventor('Albert Einstein', 'German')")

View File

@@ -26,7 +26,7 @@ reflection using a `java.lang.reflect.Method`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Method method = ...;
@@ -36,7 +36,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val method: Method = ...
@@ -51,7 +51,7 @@ For example, consider the following utility method that reverses a string:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public abstract class StringUtils {
@@ -63,7 +63,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun reverseString(input: String): String {
return StringBuilder(input).reverse().toString()
@@ -77,7 +77,7 @@ You can register and use the preceding method, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
@@ -92,7 +92,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
@@ -120,7 +120,7 @@ example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
@@ -136,7 +136,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val context = SimpleEvaluationContext.forReadOnlyDataBinding().build()
@@ -160,7 +160,7 @@ following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
@@ -180,7 +180,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val context = SimpleEvaluationContext.forReadOnlyDataBinding().build()

View File

@@ -7,7 +7,7 @@ You can directly express lists in an expression by using `{}` notation.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// evaluates to a Java list containing the four numbers
List numbers = (List) parser.parseExpression("{1,2,3,4}").getValue(context);
@@ -17,7 +17,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// evaluates to a Java list containing the four numbers
val numbers = parser.parseExpression("{1,2,3,4}").getValue(context) as List<*>

View File

@@ -8,7 +8,7 @@ following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// evaluates to a Java map containing the two entries
Map inventorInfo = (Map) parser.parseExpression("{name:'Nikola',dob:'10-July-1856'}").getValue(context);
@@ -18,7 +18,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
// evaluates to a Java map containing the two entries
val inventorInfo = parser.parseExpression("{name:'Nikola',dob:'10-July-1856'}").getValue(context) as Map<*, *>

View File

@@ -53,7 +53,7 @@ method.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
@@ -75,7 +75,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()

View File

@@ -9,7 +9,7 @@ invoke methods:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// string literal, evaluates to "bc"
String bc = parser.parseExpression("'abc'.substring(1, 3)").getValue(String.class);
@@ -21,7 +21,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// string literal, evaluates to "bc"
val bc = parser.parseExpression("'abc'.substring(1, 3)").getValue(String::class.java)

View File

@@ -19,7 +19,7 @@ The following example shows how to use the Elvis operator:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
@@ -29,7 +29,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
@@ -48,7 +48,7 @@ The following listing shows a more complex example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
@@ -64,7 +64,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val context = SimpleEvaluationContext.forReadOnlyDataBinding().build()

View File

@@ -27,7 +27,7 @@ The following example shows how to use the safe navigation operator for property
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
@@ -50,7 +50,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val context = SimpleEvaluationContext.forReadOnlyDataBinding().build()
@@ -100,7 +100,7 @@ a list (`?.[]`).
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
IEEE society = new IEEE();
@@ -121,7 +121,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val society = IEEE()
@@ -161,7 +161,7 @@ selection (`?.?`).
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
IEEE society = new IEEE();
@@ -182,7 +182,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val society = IEEE()
@@ -209,7 +209,7 @@ collections (`?.^`).
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
IEEE society = new IEEE();
@@ -231,7 +231,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val society = IEEE()
@@ -260,7 +260,7 @@ collections (`?.$`).
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
IEEE society = new IEEE();
@@ -282,7 +282,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val society = IEEE()
@@ -310,7 +310,7 @@ projection (`?.!`).
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
IEEE society = new IEEE();
@@ -331,7 +331,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val society = IEEE()
@@ -380,7 +380,7 @@ evaluates to `null` instead of throwing an exception.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
IEEE society = new IEEE();
@@ -401,7 +401,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val society = IEEE()

View File

@@ -8,7 +8,7 @@ the expression. The following listing shows a minimal example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
String falseString = parser.parseExpression(
"false ? 'trueExp' : 'falseExp'").getValue(String.class);
@@ -16,7 +16,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val falseString = parser.parseExpression(
"false ? 'trueExp' : 'falseExp'").getValue(String::class.java)
@@ -30,7 +30,7 @@ realistic example follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
parser.parseExpression("name").setValue(societyContext, "IEEE");
societyContext.setVariable("queryName", "Nikola Tesla");
@@ -45,7 +45,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
parser.parseExpression("name").setValue(societyContext, "IEEE")
societyContext.setVariable("queryName", "Nikola Tesla")

View File

@@ -24,7 +24,7 @@ The following listing shows a few examples of relational operators:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// evaluates to true
boolean trueValue = parser.parseExpression("2 == 2").getValue(Boolean.class);
@@ -41,7 +41,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// evaluates to true
val trueValue = parser.parseExpression("2 == 2").getValue(Boolean::class.java)
@@ -89,7 +89,7 @@ shows examples of all three:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
boolean result;
@@ -128,7 +128,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// evaluates to true
var result = parser.parseExpression(
@@ -195,7 +195,7 @@ The following example shows how to use the logical operators:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// -- AND --
@@ -228,7 +228,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// -- AND --
@@ -277,7 +277,7 @@ The following example shows the `String` operators in use:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// -- Concatenation --
@@ -300,7 +300,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// -- Concatenation --
@@ -358,7 +358,7 @@ The following example shows the mathematical operators in use:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Inventor inventor = new Inventor();
EvaluationContext context = SimpleEvaluationContext.forReadWriteDataBinding().build();
@@ -424,7 +424,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val inventor = Inventor()
val context = SimpleEvaluationContext.forReadWriteDataBinding().build()
@@ -501,7 +501,7 @@ listing shows both ways to use the assignment operator:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Inventor inventor = new Inventor();
EvaluationContext context = SimpleEvaluationContext.forReadWriteDataBinding().build();
@@ -515,7 +515,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val inventor = Inventor()
val context = SimpleEvaluationContext.forReadWriteDataBinding().build()
@@ -541,7 +541,7 @@ For example, if we want to overload the `ADD` operator to allow two lists to be
concatenated using the `+` sign, we can implement a custom `OperatorOverloader` as
follows.
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
pubic class ListConcatenation implements OperatorOverloader {
@@ -576,7 +576,7 @@ as demonstrated in the following example.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
StandardEvaluationContext context = new StandardEvaluationContext();
context.setOperatorOverloader(new ListConcatenation());
@@ -587,7 +587,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
StandardEvaluationContext context = StandardEvaluationContext()
context.setOperatorOverloader(ListConcatenation())

View File

@@ -25,7 +25,7 @@ we use the following expressions:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// evaluates to 1856
int year = (Integer) parser.parseExpression("birthdate.year + 1900").getValue(context);
@@ -36,7 +36,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// evaluates to 1856
val year = parser.parseExpression("birthdate.year + 1900").getValue(context) as Int
@@ -74,7 +74,7 @@ the collection using its `Iterator` and returning the n^th^ element encountered.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
@@ -100,7 +100,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val parser = SpelExpressionParser()
val context = SimpleEvaluationContext.forReadOnlyDataBinding().build()
@@ -138,7 +138,7 @@ NOTE: The n^th^ character of a string will evaluate to a `java.lang.String`, not
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// evaluates to "T" (8th letter of "Nikola Tesla")
String character = parser.parseExpression("members[0].name[7]")
@@ -147,7 +147,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// evaluates to "T" (8th letter of "Nikola Tesla")
val character = parser.parseExpression("members[0].name[7]")
@@ -166,7 +166,7 @@ string literals such as `'president'`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// Officer's Map
@@ -191,7 +191,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// Officer's Map
@@ -227,7 +227,7 @@ property.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// Create an inventor to use as the root context object.
Inventor tesla = new Inventor("Nikola Tesla");
@@ -239,7 +239,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// Create an inventor to use as the root context object.
val tesla = Inventor("Nikola Tesla")
@@ -325,7 +325,7 @@ into a `FruitMap` and then index into the `FruitMap` within a SpEL expression.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// Create a ReflectiveIndexAccessor for FruitMap
IndexAccessor fruitMapAccessor = new ReflectiveIndexAccessor(
@@ -344,7 +344,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// Create a ReflectiveIndexAccessor for FruitMap
val fruitMapAccessor = ReflectiveIndexAccessor(

View File

@@ -10,7 +10,7 @@ shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
String randomPhrase = parser.parseExpression(
"random number is #{T(java.lang.Math).random()}",
@@ -21,7 +21,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val randomPhrase = parser.parseExpression(
"random number is #{T(java.lang.Math).random()}",

View File

@@ -13,7 +13,7 @@ following example shows how to use the `T` operator:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Class dateClass = parser.parseExpression("T(java.util.Date)").getValue(Class.class);
@@ -26,7 +26,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val dateClass = parser.parseExpression("T(java.util.Date)").getValue(Class::class.java)

View File

@@ -42,7 +42,7 @@ The following example shows how to use variables.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Inventor tesla = new Inventor("Nikola Tesla", "Serbian");
@@ -55,7 +55,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val tesla = Inventor("Nikola Tesla", "Serbian")
@@ -83,7 +83,7 @@ xref:core/expressions/language-ref/collection-selection.adoc[collection selectio
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// Create a list of prime integers.
List<Integer> primes = List.of(2, 3, 5, 7, 11, 13, 17);
@@ -103,7 +103,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// Create a list of prime integers.
val primes = listOf(2, 3, 5, 7, 11, 13, 17)
@@ -130,7 +130,7 @@ xref:core/expressions/language-ref/collection-projection.adoc[collection project
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// Create parser and evaluation context.
ExpressionParser parser = new SpelExpressionParser();
@@ -154,7 +154,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// Create parser and evaluation context.
val parser = SpelExpressionParser()

View File

@@ -280,14 +280,14 @@ snippet of code was run against a `ClassPathXmlApplicationContext` instance:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Resource template = ctx.getResource("some/resource/path/myTemplate.txt");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val template = ctx.getResource("some/resource/path/myTemplate.txt")
----
@@ -309,14 +309,14 @@ example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val template = ctx.getResource("classpath:some/resource/path/myTemplate.txt")
----
@@ -329,14 +329,14 @@ Similarly, you can force a `UrlResource` to be used by specifying any of the sta
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Resource template = ctx.getResource("file:///some/resource/path/myTemplate.txt");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val template = ctx.getResource("file:///some/resource/path/myTemplate.txt")
----
@@ -346,14 +346,14 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Resource template = ctx.getResource("https://myhost.com/resource/path/myTemplate.txt");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val template = ctx.getResource("https://myhost.com/resource/path/myTemplate.txt")
----
@@ -505,7 +505,7 @@ property of type `Resource`.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
package example;
@@ -523,7 +523,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MyBean(var template: Resource)
----
@@ -571,7 +571,7 @@ The following example demonstrates how to achieve this.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class MyBean {
@@ -588,7 +588,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class MyBean(@Value("\${template.path}") private val template: Resource)
@@ -606,7 +606,7 @@ can be injected into the `MyBean` constructor.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class MyBean {
@@ -623,7 +623,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class MyBean(@Value("\${templates.path}") private val templates: Resource[])
@@ -657,14 +657,14 @@ specific application context. For example, consider the following example, which
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = ClassPathXmlApplicationContext("conf/appContext.xml")
----
@@ -677,7 +677,7 @@ used. However, consider the following example, which creates a `FileSystemXmlApp
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext ctx =
new FileSystemXmlApplicationContext("conf/appContext.xml");
@@ -685,7 +685,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = FileSystemXmlApplicationContext("conf/appContext.xml")
----
@@ -702,7 +702,7 @@ definitions. Consider the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext ctx =
new FileSystemXmlApplicationContext("classpath:conf/appContext.xml");
@@ -710,7 +710,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = FileSystemXmlApplicationContext("classpath:conf/appContext.xml")
----
@@ -749,7 +749,7 @@ classpath) can be instantiated:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext ctx = new ClassPathXmlApplicationContext(
new String[] {"services.xml", "repositories.xml"}, MessengerService.class);
@@ -757,7 +757,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = ClassPathXmlApplicationContext(arrayOf("services.xml", "repositories.xml"), MessengerService::class.java)
----
@@ -843,7 +843,7 @@ special `classpath*:` prefix, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext ctx =
new ClassPathXmlApplicationContext("classpath*:conf/appContext.xml");
@@ -851,7 +851,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = ClassPathXmlApplicationContext("classpath*:conf/appContext.xml")
----
@@ -955,7 +955,7 @@ In practice, this means the following examples are equivalent:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext ctx =
new FileSystemXmlApplicationContext("conf/context.xml");
@@ -963,7 +963,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = FileSystemXmlApplicationContext("conf/context.xml")
----
@@ -973,7 +973,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext ctx =
new FileSystemXmlApplicationContext("/conf/context.xml");
@@ -981,7 +981,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx = FileSystemXmlApplicationContext("/conf/context.xml")
----
@@ -994,7 +994,7 @@ case is relative and the other absolute):
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
FileSystemXmlApplicationContext ctx = ...;
ctx.getResource("some/resource/path/myTemplate.txt");
@@ -1002,7 +1002,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx: FileSystemXmlApplicationContext = ...
ctx.getResource("some/resource/path/myTemplate.txt")
@@ -1013,7 +1013,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
FileSystemXmlApplicationContext ctx = ...;
ctx.getResource("/some/resource/path/myTemplate.txt");
@@ -1021,7 +1021,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val ctx: FileSystemXmlApplicationContext = ...
ctx.getResource("/some/resource/path/myTemplate.txt")
@@ -1037,7 +1037,7 @@ show how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// actual context type doesn't matter, the Resource will always be UrlResource
ctx.getResource("file:///some/resource/path/myTemplate.txt");
@@ -1045,7 +1045,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// actual context type doesn't matter, the Resource will always be UrlResource
ctx.getResource("file:///some/resource/path/myTemplate.txt")
@@ -1056,7 +1056,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// force this FileSystemXmlApplicationContext to load its definition via a UrlResource
ApplicationContext ctx =
@@ -1065,7 +1065,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// force this FileSystemXmlApplicationContext to load its definition via a UrlResource
val ctx = FileSystemXmlApplicationContext("file:///conf/context.xml")

View File

@@ -27,7 +27,7 @@ the following example.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MyBean {
private final Log log = LogFactory.getLog(getClass());
@@ -37,7 +37,7 @@ public class MyBean {
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MyBean {
private val log = LogFactory.getLog(javaClass)

View File

@@ -115,7 +115,7 @@ properties:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class Company {
@@ -142,7 +142,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class Company {
var name: String? = null
@@ -155,7 +155,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class Employee {
@@ -183,7 +183,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class Employee {
var name: String? = null
@@ -199,7 +199,7 @@ the properties of instantiated ``Company``s and ``Employee``s:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
BeanWrapper company = new BeanWrapperImpl(new Company());
// setting the company name..
@@ -219,7 +219,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val company = BeanWrapperImpl(Company())
// setting the company name..
@@ -379,7 +379,7 @@ associates a `CustomNumberEditor` with the `age` property of the `Something` cla
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SomethingBeanInfo extends SimpleBeanInfo {
@@ -403,7 +403,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SomethingBeanInfo : SimpleBeanInfo() {
@@ -467,7 +467,7 @@ another class called `DependsOnExoticType`, which needs `ExoticType` set as a pr
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package example;
@@ -492,7 +492,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package example
@@ -522,7 +522,7 @@ The `PropertyEditor` implementation could look similar to the following:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package example;
@@ -539,7 +539,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package example
@@ -593,7 +593,7 @@ The following example shows how to create your own `PropertyEditorRegistrar` imp
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo.editors.spring;
@@ -611,7 +611,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package com.foo.editors.spring
@@ -661,7 +661,7 @@ example uses a `PropertyEditorRegistrar` in the implementation of an `@InitBinde
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Controller
public class RegisterUserController {
@@ -683,7 +683,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Controller
class RegisterUserController(

View File

@@ -20,7 +20,7 @@ Consider the following example, which shows a simple `PersonForm` model with two
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class PersonForm {
private String name;
@@ -30,7 +30,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class PersonForm(
private val name: String,
@@ -45,7 +45,7 @@ Bean Validation lets you declare constraints as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class PersonForm {
@@ -60,7 +60,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class PersonForm(
@get:NotNull @get:Size(max=64)
@@ -94,7 +94,7 @@ bean, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
@@ -110,7 +110,7 @@ Java::
XML::
+
[source,xml,indent=0,subs="verbatim,quotes",role="secondary"]
[source,xml,indent=0,subs="verbatim,quotes"]
----
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
@@ -134,7 +134,7 @@ as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import jakarta.validation.Validator;
@@ -148,7 +148,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import jakarta.validation.Validator;
@@ -171,7 +171,7 @@ For example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import org.springframework.validation.Validator;
@@ -185,7 +185,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.validation.Validator
@@ -226,7 +226,7 @@ The following example shows a custom `@Constraint` declaration followed by an as
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@@ -237,7 +237,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.FIELD)
@Retention(AnnotationRetention.RUNTIME)
@@ -250,7 +250,7 @@ Kotlin::
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import jakarta.validation.ConstraintValidator;
@@ -265,7 +265,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import jakarta.validation.ConstraintValidator
@@ -344,7 +344,7 @@ Given the following class declarations:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
record Person(@Size(min = 1, max = 10) String name) {
}
@@ -360,7 +360,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@JvmRecord
internal data class Person(@Size(min = 1, max = 10) val name: String)
@@ -389,7 +389,7 @@ message argument `"name"` is itself a `MessageSourceResolvable` with error codes
Properties::
+
[source,properties,indent=0,subs="verbatim,quotes",role="secondary"]
[source,properties,indent=0,subs="verbatim,quotes"]
----
Size.person.name=Please, provide a {0} that is between {2} and {1} characters long
person.name=username
@@ -406,7 +406,7 @@ To customize the above default message, you can add a property such as:
Properties::
+
[source,properties,indent=0,subs="verbatim,quotes",role="secondary"]
[source,properties,indent=0,subs="verbatim,quotes"]
----
Max.degrees=You cannot provide more than {1} {0}
----
@@ -437,7 +437,7 @@ logic after binding to a target object:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Foo target = new Foo();
DataBinder binder = new DataBinder(target);
@@ -455,7 +455,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val target = Foo()
val binder = DataBinder(target)

View File

@@ -263,7 +263,7 @@ it like you would for any other bean. The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Service
public class MyService {
@@ -282,7 +282,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Service
class MyService(private val conversionService: ConversionService) {
@@ -306,7 +306,7 @@ as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
DefaultConversionService cs = new DefaultConversionService();
@@ -318,7 +318,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val cs = DefaultConversionService()

View File

@@ -83,7 +83,7 @@ The following `DateFormatter` is an example `Formatter` implementation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package org.springframework.format.datetime;
@@ -119,7 +119,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
class DateFormatter(private val pattern: String) : Formatter<Date> {
@@ -180,7 +180,7 @@ annotation to a formatter to let a number style or pattern be specified:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public final class NumberFormatAnnotationFormatterFactory
implements AnnotationFormatterFactory<NumberFormat> {
@@ -217,7 +217,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class NumberFormatAnnotationFormatterFactory : AnnotationFormatterFactory<NumberFormat> {
@@ -256,7 +256,7 @@ example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MyModel {
@@ -267,7 +267,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MyModel(
@field:NumberFormat(style = Style.CURRENCY) private val decimal: BigDecimal
@@ -292,7 +292,7 @@ The following example uses `@DateTimeFormat` to format a `java.util.Date` as an
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class MyModel {
@@ -303,7 +303,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class MyModel(
@DateTimeFormat(iso=ISO.DATE) private val date: Date

View File

@@ -11,7 +11,7 @@ Consider the following example of a small data object:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class Person {
@@ -24,7 +24,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class Person(val name: String, val age: Int)
----
@@ -45,7 +45,7 @@ example implements `Validator` for `Person` instances:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class PersonValidator implements Validator {
@@ -70,7 +70,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class PersonValidator : Validator {
@@ -114,7 +114,7 @@ as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class CustomerValidator implements Validator {
@@ -155,7 +155,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class CustomerValidator(private val addressValidator: Validator) : Validator {

View File

@@ -56,7 +56,7 @@ how to use the `@Repository` annotation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Repository // <1>
public class SomeMovieFinder implements MovieFinder {
@@ -67,7 +67,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Repository // <1>
class SomeMovieFinder : MovieFinder {
@@ -89,7 +89,7 @@ annotations. The following example works for a JPA repository:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Repository
public class JpaMovieFinder implements MovieFinder {
@@ -103,7 +103,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Repository
class JpaMovieFinder : MovieFinder {
@@ -124,7 +124,7 @@ example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Repository
public class HibernateMovieFinder implements MovieFinder {
@@ -142,7 +142,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Repository
class HibernateMovieFinder(private val sessionFactory: SessionFactory) : MovieFinder {
@@ -160,7 +160,7 @@ and other data access support classes (such as `SimpleJdbcCall` and others) by u
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Repository
public class JdbcMovieFinder implements MovieFinder {
@@ -178,7 +178,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Repository
class JdbcMovieFinder(dataSource: DataSource) : MovieFinder {

View File

@@ -21,7 +21,7 @@ and the entire list is used as the batch:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -53,7 +53,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -104,7 +104,7 @@ The following example shows a batch update using named parameters:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -126,7 +126,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -155,7 +155,7 @@ JDBC `?` placeholders:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -183,7 +183,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -254,7 +254,7 @@ The following example shows a batch update that uses a batch size of 100:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -283,7 +283,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {

View File

@@ -62,14 +62,14 @@ The following query gets the number of rows in a relation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
int rowCount = this.jdbcTemplate.queryForObject("select count(*) from t_actor", Integer.class);
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val rowCount = jdbcTemplate.queryForObject<Int>("select count(*) from t_actor")!!
----
@@ -81,7 +81,7 @@ The following query uses a bind variable:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
int countOfActorsNamedJoe = this.jdbcTemplate.queryForObject(
"select count(*) from t_actor where first_name = ?", Integer.class, "Joe");
@@ -89,7 +89,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val countOfActorsNamedJoe = jdbcTemplate.queryForObject<Int>(
"select count(*) from t_actor where first_name = ?", arrayOf("Joe"))!!
@@ -103,7 +103,7 @@ The following query looks for a `String`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
String lastName = this.jdbcTemplate.queryForObject(
"select last_name from t_actor where id = ?",
@@ -112,7 +112,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val lastName = this.jdbcTemplate.queryForObject<String>(
"select last_name from t_actor where id = ?",
@@ -126,7 +126,7 @@ The following query finds and populates a single domain object:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Actor actor = jdbcTemplate.queryForObject(
"select first_name, last_name from t_actor where id = ?",
@@ -141,7 +141,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val actor = jdbcTemplate.queryForObject(
"select first_name, last_name from t_actor where id = ?",
@@ -157,7 +157,7 @@ The following query finds and populates a list of domain objects:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
List<Actor> actors = this.jdbcTemplate.query(
"select first_name, last_name from t_actor",
@@ -171,7 +171,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val actors = jdbcTemplate.query("select first_name, last_name from t_actor") { rs, _ ->
Actor(rs.getString("first_name"), rs.getString("last_name"))
@@ -187,7 +187,7 @@ For example, it may be better to write the preceding code snippet as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
private final RowMapper<Actor> actorRowMapper = (resultSet, rowNum) -> {
Actor actor = new Actor();
@@ -203,7 +203,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val actorMapper = RowMapper<Actor> { rs: ResultSet, rowNum: Int ->
Actor(rs.getString("first_name"), rs.getString("last_name"))
@@ -227,7 +227,7 @@ The following example inserts a new entry:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
this.jdbcTemplate.update(
"insert into t_actor (first_name, last_name) values (?, ?)",
@@ -236,7 +236,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
jdbcTemplate.update(
"insert into t_actor (first_name, last_name) values (?, ?)",
@@ -250,7 +250,7 @@ The following example updates an existing entry:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
this.jdbcTemplate.update(
"update t_actor set last_name = ? where id = ?",
@@ -259,7 +259,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
jdbcTemplate.update(
"update t_actor set last_name = ? where id = ?",
@@ -273,7 +273,7 @@ The following example deletes an entry:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
this.jdbcTemplate.update(
"delete from t_actor where id = ?",
@@ -282,7 +282,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
jdbcTemplate.update("delete from t_actor where id = ?", actorId.toLong())
----
@@ -300,14 +300,14 @@ table:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
this.jdbcTemplate.execute("create table mytable (id integer, name varchar(100))");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
jdbcTemplate.execute("create table mytable (id integer, name varchar(100))")
----
@@ -319,7 +319,7 @@ The following example invokes a stored procedure:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
this.jdbcTemplate.update(
"call SUPPORT.REFRESH_ACTORS_SUMMARY(?)",
@@ -328,7 +328,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
jdbcTemplate.update(
"call SUPPORT.REFRESH_ACTORS_SUMMARY(?)",
@@ -398,7 +398,7 @@ parameters. The following example shows how to use `NamedParameterJdbcTemplate`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// some JDBC-backed DAO class...
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@@ -416,7 +416,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
private val namedParameterJdbcTemplate = NamedParameterJdbcTemplate(dataSource)
@@ -443,7 +443,7 @@ The following example shows the use of the `Map`-based style:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// some JDBC-backed DAO class...
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@@ -461,7 +461,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// some JDBC-backed DAO class...
private val namedParameterJdbcTemplate = NamedParameterJdbcTemplate(dataSource)
@@ -494,7 +494,7 @@ The following example shows a typical JavaBean:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class Actor {
@@ -520,7 +520,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
data class Actor(val id: Long, val firstName: String, val lastName: String)
----
@@ -533,7 +533,7 @@ members of the class shown in the preceding example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// some JDBC-backed DAO class...
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@@ -552,7 +552,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// some JDBC-backed DAO class...
private val namedParameterJdbcTemplate = NamedParameterJdbcTemplate(dataSource)
@@ -746,7 +746,7 @@ You can extend `SQLErrorCodeSQLExceptionTranslator`, as the following example sh
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class CustomSQLErrorCodesTranslator extends SQLErrorCodeSQLExceptionTranslator {
@@ -761,7 +761,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class CustomSQLErrorCodesTranslator : SQLErrorCodeSQLExceptionTranslator() {
@@ -786,7 +786,7 @@ how you can use this custom translator:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
private JdbcTemplate jdbcTemplate;
@@ -811,7 +811,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// create a JdbcTemplate and set data source
private val jdbcTemplate = JdbcTemplate(dataSource).apply {
@@ -846,7 +846,7 @@ fully functional class that creates a new table:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -867,7 +867,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import javax.sql.DataSource
import org.springframework.jdbc.core.JdbcTemplate
@@ -897,7 +897,7 @@ query methods, one for an `int` and one that queries for a `String`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -922,7 +922,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import javax.sql.DataSource
import org.springframework.jdbc.core.JdbcTemplate
@@ -950,7 +950,7 @@ list of all the rows, it might be as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
private JdbcTemplate jdbcTemplate;
@@ -965,7 +965,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
private val jdbcTemplate = JdbcTemplate(dataSource)
@@ -992,7 +992,7 @@ The following example updates a column for a certain primary key:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -1013,7 +1013,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import javax.sql.DataSource
import org.springframework.jdbc.core.JdbcTemplate
@@ -1051,7 +1051,7 @@ on Oracle but may not work on other platforms:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
final String INSERT_SQL = "insert into my_test (name) values(?)";
final String name = "Rob";
@@ -1068,7 +1068,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val INSERT_SQL = "insert into my_test (name) values(?)"
val name = "Rob"

View File

@@ -76,7 +76,7 @@ to customize them if necessary. The following example uses H2 with a custom driv
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
public class DataSourceConfig {
@@ -104,7 +104,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class DataSourceConfig {
@@ -150,7 +150,7 @@ The following listing shows the test template:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class DataAccessIntegrationTestTemplate {
@@ -182,7 +182,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class DataAccessIntegrationTestTemplate {

View File

@@ -44,7 +44,7 @@ data from the `t_actor` relation to an instance of the `Actor` class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ActorMappingQuery extends MappingSqlQuery<Actor> {
@@ -67,7 +67,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ActorMappingQuery(ds: DataSource) : MappingSqlQuery<Actor>(ds, "select id, first_name, last_name from t_actor where id = ?") {
@@ -103,7 +103,7 @@ example shows how to define such a class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
private ActorMappingQuery actorMappingQuery;
@@ -119,7 +119,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
private val actorMappingQuery = ActorMappingQuery(dataSource)
@@ -138,7 +138,7 @@ example shows such a method:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public List<Actor> searchForActors(int age, String namePattern) {
return actorSearchMappingQuery.execute(age, namePattern);
@@ -147,7 +147,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun searchForActors(age: Int, namePattern: String) =
actorSearchMappingQuery.execute(age, namePattern)
@@ -171,7 +171,7 @@ The following example creates a custom update method named `execute`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import java.sql.Types;
import javax.sql.DataSource;
@@ -201,7 +201,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import java.sql.Types
import javax.sql.DataSource
@@ -247,7 +247,7 @@ as the following code snippet shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
new SqlParameter("in_id", Types.NUMERIC),
new SqlOutParameter("out_first_name", Types.VARCHAR),
@@ -255,7 +255,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
SqlParameter("in_id", Types.NUMERIC),
SqlOutParameter("out_first_name", Types.VARCHAR),
@@ -293,7 +293,7 @@ The following listing shows our custom StoredProcedure class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import java.sql.Types;
import java.util.Date;
@@ -342,7 +342,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import java.sql.Types
import java.util.Date
@@ -387,7 +387,7 @@ Oracle REF cursors):
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import java.util.HashMap;
import java.util.Map;
@@ -416,7 +416,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import java.util.HashMap
import javax.sql.DataSource
@@ -456,7 +456,7 @@ the supplied `ResultSet`, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -476,7 +476,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import java.sql.ResultSet
import com.foo.domain.Title
@@ -497,7 +497,7 @@ the supplied `ResultSet`, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -514,7 +514,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import java.sql.ResultSet
import com.foo.domain.Genre
@@ -537,7 +537,7 @@ delegate to the untyped `execute(Map)` method in the superclass, as the followin
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import java.sql.Types;
import java.util.Date;
@@ -571,7 +571,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import java.sql.Types
import java.util.Date

View File

@@ -67,7 +67,7 @@ The following example shows how to create and insert a BLOB:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
final File blobIn = new File("spring2004.jpg");
final InputStream blobIs = new FileInputStream(blobIn);
@@ -95,7 +95,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val blobIn = File("spring2004.jpg")
val blobIs = FileInputStream(blobIn)
@@ -142,7 +142,7 @@ The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
List<Map<String, Object>> l = jdbcTemplate.query("select id, a_clob, a_blob from lob_table",
new RowMapper<Map<String, Object>>() {
@@ -161,7 +161,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val l = jdbcTemplate.query("select id, a_clob, a_blob from lob_table") { rs, _ ->
val clobText = lobHandler.getClobAsString(rs, "a_clob") // <1>

View File

@@ -23,7 +23,7 @@ example uses only one configuration method (we show examples of multiple methods
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -47,7 +47,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -85,7 +85,7 @@ listing shows how it works:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -111,7 +111,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -150,7 +150,7 @@ You can limit the columns for an insert by specifying a list of column names wit
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -177,7 +177,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -217,7 +217,7 @@ values. The following example shows how to use `BeanPropertySqlParameterSource`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -241,7 +241,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -267,7 +267,7 @@ convenient `addValue` method that can be chained. The following example shows ho
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -293,7 +293,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -359,7 +359,7 @@ of the stored procedure):
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -388,7 +388,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -437,7 +437,7 @@ the constructor of your `SimpleJdbcCall`. The following example shows this confi
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -456,7 +456,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -502,7 +502,7 @@ the preceding example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -529,7 +529,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -567,7 +567,7 @@ similar to the following:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
new SqlParameter("in_id", Types.NUMERIC),
new SqlOutParameter("out_first_name", Types.VARCHAR),
@@ -575,7 +575,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
SqlParameter("in_id", Types.NUMERIC),
SqlOutParameter("out_first_name", Types.VARCHAR),
@@ -636,7 +636,7 @@ as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -662,7 +662,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {
@@ -720,7 +720,7 @@ The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class JdbcActorDao implements ActorDao {
@@ -746,7 +746,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class JdbcActorDao(dataSource: DataSource) : ActorDao {

View File

@@ -65,7 +65,7 @@ examples (one for Java configuration and one for XML configuration) show how to
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Repository
public class ProductDaoImpl implements ProductDao {
@@ -77,7 +77,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Repository
class ProductDaoImpl : ProductDao {

View File

@@ -105,7 +105,7 @@ implementation resembles the following example, based on the plain Hibernate API
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ProductDaoImpl implements ProductDao {
@@ -126,7 +126,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ProductDaoImpl(private val sessionFactory: SessionFactory) : ProductDao {
@@ -208,7 +208,7 @@ these annotated methods. The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ProductServiceImpl implements ProductService {
@@ -233,7 +233,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ProductServiceImpl(private val productDao: ProductDao) : ProductService {
@@ -317,7 +317,7 @@ and an example for a business method implementation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ProductServiceImpl implements ProductService {
@@ -345,7 +345,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ProductServiceImpl(transactionManager: PlatformTransactionManager,
private val productDao: ProductDao) : ProductService {

View File

@@ -299,7 +299,7 @@ shows a plain JPA DAO implementation that uses the `@PersistenceUnit` annotation
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ProductDaoImpl implements ProductDao {
@@ -328,7 +328,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ProductDaoImpl : ProductDao {
@@ -394,7 +394,7 @@ EntityManager) to be injected instead of the factory. The following example show
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class ProductDaoImpl implements ProductDao {
@@ -411,7 +411,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class ProductDaoImpl : ProductDao {

View File

@@ -175,7 +175,7 @@ use a simple JavaBean to represent the settings:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class Settings {
@@ -193,7 +193,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class Settings {
var isFooEnabled: Boolean = false
@@ -210,7 +210,7 @@ constructs a Spring application context and calls these two methods:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -261,7 +261,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class Application {

View File

@@ -68,14 +68,14 @@ The simplest way to create a `DatabaseClient` object is through a static factory
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
DatabaseClient client = DatabaseClient.create(connectionFactory);
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val client = DatabaseClient.create(connectionFactory)
----
@@ -133,7 +133,7 @@ code that creates a new table:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Mono<Void> completion = client.sql("CREATE TABLE person (id VARCHAR(255) PRIMARY KEY, name VARCHAR(255), age INTEGER);")
.then();
@@ -141,7 +141,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
client.sql("CREATE TABLE person (id VARCHAR(255) PRIMARY KEY, name VARCHAR(255), age INTEGER);")
.await()
@@ -170,7 +170,7 @@ The following query gets the `id` and `name` columns from a table:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Mono<Map<String, Object>> first = client.sql("SELECT id, name FROM person")
.fetch().first();
@@ -178,7 +178,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val first = client.sql("SELECT id, name FROM person")
.fetch().awaitSingle()
@@ -191,7 +191,7 @@ The following query uses a bind variable:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Mono<Map<String, Object>> first = client.sql("SELECT id, name FROM person WHERE first_name = :fn")
.bind("fn", "Joe")
@@ -200,7 +200,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val first = client.sql("SELECT id, name FROM person WHERE first_name = :fn")
.bind("fn", "Joe")
@@ -237,7 +237,7 @@ The following example extracts the `name` column and emits its value:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Flux<String> names = client.sql("SELECT name FROM person")
.map(row -> row.get("name", String.class))
@@ -246,7 +246,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val names = client.sql("SELECT name FROM person")
.map{ row: Row -> row.get("name", String.class) }
@@ -298,7 +298,7 @@ of updated rows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Mono<Integer> affectedRows = client.sql("UPDATE person SET first_name = :fn")
.bind("fn", "Joe")
@@ -307,7 +307,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val affectedRows = client.sql("UPDATE person SET first_name = :fn")
.bind("fn", "Joe")
@@ -421,7 +421,7 @@ The preceding query can be parameterized and run as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
List<Object[]> tuples = new ArrayList<>();
tuples.add(new Object[] {"John", 35});
@@ -433,7 +433,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val tuples: MutableList<Array<Any>> = ArrayList()
tuples.add(arrayOf("John", 35))
@@ -452,7 +452,7 @@ The following example shows a simpler variant using `IN` predicates:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
client.sql("SELECT id, name, state FROM table WHERE age IN (:ages)")
.bind("ages", Arrays.asList(35, 50));
@@ -460,7 +460,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
client.sql("SELECT id, name, state FROM table WHERE age IN (:ages)")
.bind("ages", arrayOf(35, 50))
@@ -487,7 +487,7 @@ modify statements in their execution, as the following example shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
client.sql("INSERT INTO table (name, state) VALUES(:name, :state)")
.filter((s, next) -> next.execute(s.returnGeneratedValues("id")))
@@ -497,7 +497,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
client.sql("INSERT INTO table (name, state) VALUES(:name, :state)")
.filter { s: Statement, next: ExecuteFunction -> next.execute(s.returnGeneratedValues("id")) }
@@ -513,7 +513,7 @@ a `Function<Statement, Statement>`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
client.sql("INSERT INTO table (name, state) VALUES(:name, :state)")
.filter(statement -> s.returnGeneratedValues("id"));
@@ -524,7 +524,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
client.sql("INSERT INTO table (name, state) VALUES(:name, :state)")
.filter { statement -> s.returnGeneratedValues("id") }
@@ -556,7 +556,7 @@ the setter for the `ConnectionFactory`. This leads to DAOs that resemble the fol
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class R2dbcCorporateEventDao implements CorporateEventDao {
@@ -572,7 +572,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class R2dbcCorporateEventDao(connectionFactory: ConnectionFactory) : CorporateEventDao {
@@ -594,7 +594,7 @@ method with `@Autowired`. The following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component // <1>
public class R2dbcCorporateEventDao implements CorporateEventDao {
@@ -615,7 +615,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component // <1>
class R2dbcCorporateEventDao(connectionFactory: ConnectionFactory) : CorporateEventDao { // <2>
@@ -651,7 +651,7 @@ requests the generated key for the desired column.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Mono<Integer> generatedId = client.sql("INSERT INTO table (name, state) VALUES(:name, :state)")
.filter(statement -> s.returnGeneratedValues("id"))
@@ -663,7 +663,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val generatedId = client.sql("INSERT INTO table (name, state) VALUES(:name, :state)")
.filter { statement -> s.returnGeneratedValues("id") }
@@ -716,14 +716,14 @@ The following example shows how to configure a `ConnectionFactory`:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ConnectionFactory factory = ConnectionFactories.get("r2dbc:h2:mem:///test?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val factory = ConnectionFactories.get("r2dbc:h2:mem:///test?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
----

View File

@@ -19,7 +19,7 @@ Consider the following class definition:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// the service class that we want to make transactional
@Transactional
@@ -49,7 +49,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// the service class that we want to make transactional
@Transactional
@@ -138,7 +138,7 @@ programming arrangements as the following listing shows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// the reactive service class that we want to make transactional
@Transactional
@@ -168,7 +168,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// the reactive service class that we want to make transactional
@Transactional
@@ -327,7 +327,7 @@ precedence over the transactional settings defined at the class level.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Transactional(readOnly = true)
public class DefaultFooService implements FooService {
@@ -346,7 +346,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Transactional(readOnly = true)
class DefaultFooService : FooService {
@@ -485,7 +485,7 @@ in the application context:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class TransactionalService {
@@ -502,7 +502,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
class TransactionalService {
@@ -583,7 +583,7 @@ following annotation definitions:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@@ -600,7 +600,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.TYPE)
@Retention(AnnotationRetention.RUNTIME)
@@ -620,7 +620,7 @@ The preceding annotations let us write the example from the previous section as
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class TransactionalService {
@@ -638,7 +638,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
class TransactionalService {

View File

@@ -22,7 +22,7 @@ The following code shows the simple profiling aspect discussed earlier:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package x.y;
@@ -61,7 +61,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim",chomp="-packages"]
----
package x.y

View File

@@ -24,7 +24,7 @@ The following example shows how to create a transaction manager and configure th
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
// construct an appropriate transaction manager
DataSourceTransactionManager txManager = new DataSourceTransactionManager(getDataSource());
@@ -35,7 +35,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// construct an appropriate transaction manager
val txManager = DataSourceTransactionManager(getDataSource())

View File

@@ -14,7 +14,7 @@ interface:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
// the service interface that we want to make transactional
@@ -35,7 +35,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
// the service interface that we want to make transactional
@@ -60,7 +60,7 @@ The following example shows an implementation of the preceding interface:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package x.y.service;
@@ -90,7 +90,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package x.y.service
@@ -231,7 +231,7 @@ that test drives the configuration shown earlier:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public final class Boot {
@@ -245,7 +245,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -303,7 +303,7 @@ this time the code uses reactive types:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
// the reactive service interface that we want to make transactional
@@ -324,7 +324,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
// the reactive service interface that we want to make transactional
@@ -349,7 +349,7 @@ The following example shows an implementation of the preceding interface:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary",chomp="-packages"]
[source,java,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package x.y.service;
@@ -379,7 +379,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary",chomp="-packages"]
[source,kotlin,indent=0,subs="verbatim,quotes",chomp="-packages"]
----
package x.y.service

View File

@@ -30,7 +30,7 @@ Here's an example of how to use Vavr's Try with a transactional method:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Transactional
public Try<String> myTransactionalMethod() {
@@ -54,7 +54,7 @@ preferring exposure in the returned handle rather than rethrowing an exception:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Transactional @Async
public CompletableFuture<String> myTransactionalMethod() {
@@ -172,7 +172,7 @@ rollback:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public void resolvePosition() {
try {
@@ -186,7 +186,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
fun resolvePosition() {
try {

View File

@@ -19,7 +19,7 @@ example sets up such an event listener:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Component
public class MyComponent {
@@ -33,7 +33,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Component
class MyComponent {

View File

@@ -37,7 +37,7 @@ a transaction. You can then pass an instance of your custom `TransactionCallback
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleService implements Service {
@@ -63,7 +63,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// use constructor-injection to supply the PlatformTransactionManager
class SimpleService(transactionManager: PlatformTransactionManager) : Service {
@@ -87,7 +87,7 @@ with an anonymous class, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
@@ -99,7 +99,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
transactionTemplate.execute(object : TransactionCallbackWithoutResult() {
override fun doInTransactionWithoutResult(status: TransactionStatus) {
@@ -118,7 +118,7 @@ Code within the callback can roll the transaction back by calling the
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@@ -135,7 +135,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
transactionTemplate.execute(object : TransactionCallbackWithoutResult() {
@@ -165,7 +165,7 @@ a specific `TransactionTemplate:`
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleService implements Service {
@@ -184,7 +184,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SimpleService(transactionManager: PlatformTransactionManager) : Service {
@@ -240,7 +240,7 @@ the `TransactionalOperator` resembles the next example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleService implements Service {
@@ -265,7 +265,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
// use constructor-injection to supply the ReactiveTransactionManager
class SimpleService(transactionManager: ReactiveTransactionManager) : Service {
@@ -293,7 +293,7 @@ method on the supplied `ReactiveTransaction` object, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
transactionalOperator.execute(new TransactionCallback<>() {
@@ -307,7 +307,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
transactionalOperator.execute(object : TransactionCallback() {
@@ -346,7 +346,7 @@ following example shows customization of the transactional settings for a specif
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public class SimpleService implements Service {
@@ -367,7 +367,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
class SimpleService(transactionManager: ReactiveTransactionManager) : Service {
@@ -402,7 +402,7 @@ following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// explicitly setting the transaction name is something that can be done only programmatically
@@ -421,7 +421,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val def = DefaultTransactionDefinition()
// explicitly setting the transaction name is something that can be done only programmatically
@@ -455,7 +455,7 @@ following example shows how to do so:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// explicitly setting the transaction name is something that can be done only programmatically
@@ -475,7 +475,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val def = DefaultTransactionDefinition()
// explicitly setting the transaction name is something that can be done only programmatically

View File

@@ -28,7 +28,7 @@ The following sample shows how to create a default `RestClient`, and how to buil
======
Java::
+
[source,java,indent=0,subs="verbatim",role="primary"]
[source,java,indent=0,subs="verbatim"]
----
RestClient defaultClient = RestClient.create();
@@ -45,7 +45,7 @@ RestClient customClient = RestClient.builder()
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim",role="secondary"]
[source,kotlin,indent=0,subs="verbatim"]
----
val defaultClient = RestClient.create()
@@ -77,7 +77,7 @@ The following example configures a GET request to `https://example.com/orders/42
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
int id = 42;
restClient.get()
@@ -87,7 +87,7 @@ restClient.get()
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val id = 42
restClient.get()
@@ -125,7 +125,7 @@ This sample shows how `RestClient` can be used to perform a simple `GET` request
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
String result = restClient.get() <1>
.uri("https://example.com") <2>
@@ -142,7 +142,7 @@ System.out.println(result); <5>
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val result= restClient.get() <1>
.uri("https://example.com") <2>
@@ -164,7 +164,7 @@ Access to the response status code and headers is provided through `ResponseEnti
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ResponseEntity<String> result = restClient.get() <1>
.uri("https://example.com") <1>
@@ -181,7 +181,7 @@ System.out.println("Contents: " + result.getBody()); <3>
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val result = restClient.get() <1>
.uri("https://example.com") <1>
@@ -204,7 +204,7 @@ Note the usage of URI variables in this sample and that the `Accept` header is s
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
int id = ...;
Pet pet = restClient.get()
@@ -219,7 +219,7 @@ Pet pet = restClient.get()
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val id = ...
val pet = restClient.get()
@@ -239,7 +239,7 @@ In the next sample, `RestClient` is used to perform a POST request that contains
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Pet pet = ... <1>
ResponseEntity<Void> response = restClient.post() <2>
@@ -257,7 +257,7 @@ ResponseEntity<Void> response = restClient.post() <2>
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val pet: Pet = ... <1>
val response = restClient.post() <2>
@@ -283,7 +283,7 @@ This behavior can be overridden using `onStatus`.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
String result = restClient.get() <1>
.uri("https://example.com/this-url-does-not-exist") <1>
@@ -299,7 +299,7 @@ String result = restClient.get() <1>
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val result = restClient.get() <1>
.uri("https://example.com/this-url-does-not-exist") <1>
@@ -322,7 +322,7 @@ Status handlers are not applied when use `exchange()`, because the exchange func
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Pet result = restClient.get()
.uri("https://petclinic.example.com/pets/{id}", id)
@@ -343,7 +343,7 @@ Pet result = restClient.get()
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val result = restClient.get()
.uri("https://petclinic.example.com/pets/{id}", id)

View File

@@ -186,7 +186,7 @@ This is the most basic way to connect with default settings:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
RSocketRequester requester = RSocketRequester.builder().tcp("localhost", 7000);
@@ -196,7 +196,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val requester = RSocketRequester.builder().tcp("localhost", 7000)
@@ -244,7 +244,7 @@ can be registered as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
RSocketStrategies strategies = RSocketStrategies.builder()
.encoders(encoders -> encoders.add(new Jackson2CborEncoder()))
@@ -258,7 +258,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val strategies = RSocketStrategies.builder()
.encoders { it.add(Jackson2CborEncoder()) }
@@ -288,7 +288,7 @@ infrastructure that's used on a server, but registered programmatically as follo
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
RSocketStrategies strategies = RSocketStrategies.builder()
.routeMatcher(new PathPatternRouteMatcher()) // <1>
@@ -308,7 +308,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val strategies = RSocketStrategies.builder()
.routeMatcher(PathPatternRouteMatcher()) // <1>
@@ -335,7 +335,7 @@ you can still declare `RSocketMessageHandler` as a Spring bean and then apply as
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext context = ... ;
RSocketMessageHandler handler = context.getBean(RSocketMessageHandler.class);
@@ -347,7 +347,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -381,7 +381,7 @@ at that level as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
RSocketRequester requester = RSocketRequester.builder()
.rsocketConnector(connector -> {
@@ -392,7 +392,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val requester = RSocketRequester.builder()
.rsocketConnector {
@@ -419,7 +419,7 @@ decoupled from handling. For example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@ConnectMapping
Mono<Void> handle(RSocketRequester requester) {
@@ -436,7 +436,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@ConnectMapping
suspend fun handle(requester: RSocketRequester) {
@@ -464,7 +464,7 @@ xref:rsocket.adoc#rsocket-requester-server[server] requester, you can make reque
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ViewBox viewBox = ... ;
@@ -479,7 +479,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
val viewBox: ViewBox = ...
@@ -516,7 +516,7 @@ The `data(Object)` step is optional. Skip it for requests that don't send data:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
Mono<AirportLocation> location = requester.route("find.radar.EWR"))
.retrieveMono(AirportLocation.class);
@@ -524,7 +524,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.messaging.rsocket.retrieveAndAwait
@@ -541,7 +541,7 @@ values are supported by a registered `Encoder`. For example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
String securityToken = ... ;
ViewBox viewBox = ... ;
@@ -555,7 +555,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.messaging.rsocket.retrieveFlow
@@ -600,7 +600,7 @@ methods:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
static class ServerConfig {
@@ -616,7 +616,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class ServerConfig {
@@ -636,7 +636,7 @@ Then start an RSocket server through the Java RSocket API and plug the
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
ApplicationContext context = ... ;
RSocketMessageHandler handler = context.getBean(RSocketMessageHandler.class);
@@ -649,7 +649,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.beans.factory.getBean
@@ -684,7 +684,7 @@ you need to share configuration between a client and a server in the same proces
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Configuration
static class ServerConfig {
@@ -709,7 +709,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Configuration
class ServerConfig {
@@ -751,7 +751,7 @@ xref:rsocket.adoc#rsocket-annot-responders-client[client] responder configuratio
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Controller
public class RadarsController {
@@ -765,7 +765,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Controller
class RadarsController {
@@ -879,7 +879,7 @@ For example, to handle requests as a responder:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
public interface RadarsService {
@@ -898,7 +898,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
interface RadarsService {
@@ -973,7 +973,7 @@ a `Decoder` and register the mime type as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
DefaultMetadataExtractor extractor = new DefaultMetadataExtractor(metadataDecoders);
extractor.metadataToExtract(fooMimeType, Foo.class, "foo");
@@ -981,7 +981,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.messaging.rsocket.metadataToExtract
@@ -999,7 +999,7 @@ map. Here is an example where JSON is used for metadata:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
DefaultMetadataExtractor extractor = new DefaultMetadataExtractor(metadataDecoders);
extractor.metadataToExtract(
@@ -1012,7 +1012,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.messaging.rsocket.metadataToExtract
@@ -1031,7 +1031,7 @@ simply use a callback to customize registrations as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
RSocketStrategies strategies = RSocketStrategies.builder()
.metadataExtractorRegistry(registry -> {
@@ -1043,7 +1043,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
import org.springframework.messaging.rsocket.metadataToExtract

View File

@@ -30,7 +30,7 @@ configuration class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@SpringJUnitConfig(TestConfig.class) // <1>
class ConfigurationClassJUnitJupiterSpringTests {
@@ -41,7 +41,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@SpringJUnitConfig(TestConfig::class) // <1>
class ConfigurationClassJUnitJupiterSpringTests {
@@ -59,7 +59,7 @@ location of a configuration file:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@SpringJUnitConfig(locations = "/test-config.xml") // <1>
class XmlJUnitJupiterSpringTests {
@@ -70,7 +70,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@SpringJUnitConfig(locations = ["/test-config.xml"]) // <1>
class XmlJUnitJupiterSpringTests {
@@ -105,7 +105,7 @@ a configuration class:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@SpringJUnitWebConfig(TestConfig.class) // <1>
class ConfigurationClassJUnitJupiterSpringWebTests {
@@ -116,7 +116,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@SpringJUnitWebConfig(TestConfig::class) // <1>
class ConfigurationClassJUnitJupiterSpringWebTests {
@@ -134,7 +134,7 @@ location of a configuration file:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@SpringJUnitWebConfig(locations = "/test-config.xml") // <1>
class XmlJUnitJupiterSpringWebTests {
@@ -145,7 +145,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@SpringJUnitWebConfig(locations = ["/test-config.xml"]) // <1>
class XmlJUnitJupiterSpringWebTests {
@@ -274,7 +274,7 @@ example, you can create a custom `@EnabledOnMac` annotation as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@@ -287,7 +287,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@@ -340,7 +340,7 @@ example, you can create a custom `@DisabledOnMac` annotation as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@@ -353,7 +353,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)

View File

@@ -31,7 +31,7 @@ The following example shows a test that has an `@IfProfileValue` annotation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@IfProfileValue(name="java.vendor", value="Oracle Corporation") // <1>
@Test
@@ -43,7 +43,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@IfProfileValue(name="java.vendor", value="Oracle Corporation") // <1>
@Test
@@ -63,7 +63,7 @@ Consider the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@IfProfileValue(name="test-groups", values={"unit-tests", "integration-tests"}) // <1>
@Test
@@ -75,7 +75,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@IfProfileValue(name="test-groups", values=["unit-tests", "integration-tests"]) // <1>
@Test
@@ -101,7 +101,7 @@ is used by default. The following example shows how to use
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@ProfileValueSourceConfiguration(CustomProfileValueSource.class) // <1>
public class CustomProfileValueSourceTests {
@@ -112,7 +112,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@ProfileValueSourceConfiguration(CustomProfileValueSource::class) // <1>
class CustomProfileValueSourceTests {
@@ -138,7 +138,7 @@ example shows how to use it:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Timed(millis = 1000) // <1>
public void testProcessWithOneSecondTimeout() {
@@ -149,7 +149,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Timed(millis = 1000) // <1>
fun testProcessWithOneSecondTimeout() {
@@ -183,7 +183,7 @@ following example shows how to use the `@Repeat` annotation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Repeat(10) // <1>
@Test
@@ -195,7 +195,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Repeat(10) // <1>
@Test

View File

@@ -43,7 +43,7 @@ Consider the following example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@RunWith(SpringRunner.class)
@ContextConfiguration({"/app-config.xml", "/test-data-access-config.xml"})
@@ -60,7 +60,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@RunWith(SpringRunner::class)
@ContextConfiguration("/app-config.xml", "/test-data-access-config.xml")
@@ -84,7 +84,7 @@ that centralizes the common test configuration for Spring, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@@ -96,7 +96,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.TYPE)
@Retention(AnnotationRetention.RUNTIME)
@@ -114,7 +114,7 @@ configuration of individual JUnit 4 based test classes, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@RunWith(SpringRunner.class)
@TransactionalDevTestConfig
@@ -127,7 +127,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@RunWith(SpringRunner::class)
@TransactionalDevTestConfig
@@ -147,7 +147,7 @@ example:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@ExtendWith(SpringExtension.class)
@ContextConfiguration({"/app-config.xml", "/test-data-access-config.xml"})
@@ -164,7 +164,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@ExtendWith(SpringExtension::class)
@ContextConfiguration("/app-config.xml", "/test-data-access-config.xml")
@@ -189,7 +189,7 @@ as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@@ -202,7 +202,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.TYPE)
@Retention(AnnotationRetention.RUNTIME)
@@ -221,7 +221,7 @@ configuration of individual JUnit Jupiter based test classes, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@TransactionalDevTestConfig
class OrderRepositoryTests { }
@@ -232,7 +232,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@TransactionalDevTestConfig
class OrderRepositoryTests { }
@@ -253,7 +253,7 @@ follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@@ -265,7 +265,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Target(AnnotationTarget.TYPE)
@Retention(AnnotationRetention.RUNTIME)
@@ -283,7 +283,7 @@ configuration of individual JUnit Jupiter based test methods, as follows:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@TransactionalIntegrationTest
void saveOrder() { }
@@ -294,7 +294,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@TransactionalIntegrationTest
fun saveOrder() { }

View File

@@ -11,7 +11,7 @@ The following example indicates that the `dev` profile should be active:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@ContextConfiguration
@ActiveProfiles("dev") // <1>
@@ -23,7 +23,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@ContextConfiguration
@ActiveProfiles("dev") // <1>
@@ -42,7 +42,7 @@ be active:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@ContextConfiguration
@ActiveProfiles({"dev", "integration"}) // <1>
@@ -54,7 +54,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@ContextConfiguration
@ActiveProfiles(["dev", "integration"]) // <1>

View File

@@ -11,7 +11,7 @@ methods.
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@AfterTransaction // <1>
void afterTransaction() {
@@ -22,7 +22,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@AfterTransaction // <1>
fun afterTransaction() {

View File

@@ -13,7 +13,7 @@ The following example shows how to use the `@BeforeTransaction` annotation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@BeforeTransaction // <1>
void beforeTransaction() {
@@ -24,7 +24,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@BeforeTransaction // <1>
fun beforeTransaction() {

View File

@@ -13,7 +13,7 @@ The following example shows how to use the `@Commit` annotation:
======
Java::
+
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
[source,java,indent=0,subs="verbatim,quotes"]
----
@Commit // <1>
@Test
@@ -25,7 +25,7 @@ Java::
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
[source,kotlin,indent=0,subs="verbatim,quotes"]
----
@Commit // <1>
@Test

Some files were not shown because too many files have changed in this diff Show More