- Add annotation system (@Component, @Service, @Configuration, @Bean, @Inject, @Qualifier, @Primary, @Scope, @PostConstruct, @Import, @TimiInjectApplication) - Implement BeanContext for managing bean instances and definitions - Implement BeanScanner for component scanning (file system and jar) - Implement BeanFactory with constructor injection and lifecycle support - Support @Configuration and @Bean factory methods - Support @Qualifier and @Primary for multi-implementation - Support @Scope (singleton/prototype) - Support @PostConstruct lifecycle callback - Support @Import and Module extension - Add circular dependency detection - Add dependency graph export - Add demo and test cases Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
30 lines
838 B
Java
30 lines
838 B
Java
package com.imyeyu.inject.demo;
|
|
|
|
import com.imyeyu.inject.TimiInject;
|
|
import com.imyeyu.inject.annotation.TimiInjectApplication;
|
|
|
|
/**
|
|
* 演示应用
|
|
*
|
|
* @author 夜雨
|
|
*/
|
|
@TimiInjectApplication("com.imyeyu.inject.demo")
|
|
public class DemoApp {
|
|
|
|
public static void main(String[] args) {
|
|
TimiInject inject = TimiInject.run(DemoApp.class);
|
|
|
|
UserService userService = inject.di(UserService.class);
|
|
System.out.println(userService.hello());
|
|
|
|
String appName = inject.di("appName", String.class);
|
|
System.out.println("App Name: " + appName);
|
|
|
|
Storage storage = inject.di(Storage.class);
|
|
System.out.println("Storage: " + storage.getClass().getSimpleName());
|
|
|
|
System.out.println("\n=== Dependency Graph ===");
|
|
System.out.println(inject.exportDependencyGraph());
|
|
}
|
|
}
|