No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.mvn/wrapper
auto
samples
.gitignore
README.adoc
mvnw
mvnw.cmd
pom.xml

README.adoc

This project creates functional bean definitions from Spring Boot autoconfigurations. It’s really (surprisingly) fast.

To use it include the library on your classpath:

		<dependency>
			<groupId>org.springframework.boot.experimental</groupId>
			<artifactId>spring-boot-auto-reflect</artifactId>
			<version>1.0.0.BUILD-SNAPSHOT</version>
		</dependency>

Create your Spring Boot application as an ApplicationContextInitializer and register beans in the initialize() method, e.g.

@RestController
public class AutoApplication
		implements ApplicationContextInitializer<GenericApplicationContext> {

	@GetMapping
	public String home() {
		return "Hello";
	}

	@Override
	public void initialize(GenericApplicationContext context) {
		context.registerBean(AutoApplication.class, () -> this);
	}

}

then use the custom SpringApplication class from this library instead of the default one to launch your app, as normal:

	public static void main(String[] args) throws Exception {
		SpringApplication.run(AutoApplication.class, args);
	}

Instead of using an ApplicationContextInitializer you can use the regular @SpringBootApplication and @Configuration programming model in your own classes, and set spring.functional.enabled=true (e.g. as a System property). Be sure to use the custom SpringApplication class though if you do that.

For integration tests use the test context loader from this library. E.g:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = AutoApplication.class, loader = AutoTestContextLoader.class)
public class AutoApplicationTests {

	@Autowired
	private WebTestClient rest;

	@Test
	public void contextLoads() {
		rest.get().uri("/").exchange().expectBody(String.class).isEqualTo("Hello");
	}

}

Unsupported: test slices (@WebMvcTest etc.) and @AutoConfigure* annotations in tests.