Modernize the lazy-initialized beans refdoc section

Closes gh-32767
This commit is contained in:
Sébastien Deleuze
2024-05-06 17:08:49 +02:00
parent c6459b40e4
commit 04944a1f56
9 changed files with 197 additions and 16 deletions

View File

@@ -0,0 +1,20 @@
/*
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.docs.core.beans.dependencies.beansfactorylazyinit;
public class AnotherBean {
}

View File

@@ -0,0 +1,38 @@
/*
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.docs.core.beans.dependencies.beansfactorylazyinit;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
@Configuration
public class ApplicationConfiguration {
// tag::snippet[]
@Bean
@Lazy
ExpensiveToCreateBean lazy() {
return new ExpensiveToCreateBean();
}
@Bean
AnotherBean notLazy() {
return new AnotherBean();
}
// end::snippet[]
}

View File

@@ -0,0 +1,20 @@
/*
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.docs.core.beans.dependencies.beansfactorylazyinit;
public class ExpensiveToCreateBean {
}

View File

@@ -0,0 +1,28 @@
/*
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.docs.core.beans.dependencies.beansfactorylazyinit;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
// tag::snippet[]
@Configuration
@Lazy
public class LazyConfiguration {
// No bean will be pre-instantiated...
}
// end::snippet[]

View File

@@ -0,0 +1,38 @@
/*
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.docs.core.beans.dependencies.beansfactorylazyinit
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Lazy
@Configuration
class ApplicationConfiguration {
// tag::snippet[]
@Bean
@Lazy
fun lazy(): ExpensiveToCreateBean {
return ExpensiveToCreateBean()
}
@Bean
fun notLazy(): AnotherBean {
return AnotherBean()
}
// end::snippet[]
}

View File

@@ -0,0 +1,27 @@
/*
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.docs.core.beans.dependencies.beansfactorylazyinit
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Lazy
// tag::snippet[]
@Configuration
@Lazy
class LazyConfiguration {
// No bean will be pre-instantiated...
}
// end::snippet[]

View File

@@ -0,0 +1,12 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- tag::snippet[] -->
<bean id="lazy" class="com.something.ExpensiveToCreateBean" lazy-init="true"/>
<bean name="notLazy" class="com.something.AnotherBean"/>
<!-- end::snippet[] -->
</beans>

View File

@@ -0,0 +1,6 @@
<!-- tag::snippet[] -->
<beans default-lazy-init="true">
<!-- No bean will be pre-instantiated... -->
</beans>
<!-- end::snippet[] -->