§快速入门 Hello World
§1. 编程方式
显式的将对象加入到 IoC 容器中,并通过 @Inject
进行对象注入。
package jetbrick.docs.demo;
public class User {
public String getName() {
return "jetbrick";
}
}
public class Hello {
@Inject
private User user;
public void says() {
System.out.println("Hello " + user.getName());
}
}
// 调用代码
public class Test {
public static void main(String args[]) {
MutableIoc ioc = new MutableIoc();
ioc.addBean(User.class);
ioc.addBean(Hello.class);
Hello hello = ioc.getBean(Hello.class);
hello.says(); // got "Hello jetbrick"
}
}
§2. 通过 annotation 自动发现
通过 @IocBean
注解来自动将对象加入到 IoC 容器中,并通过 @Inject
进行对象注入。
package jetbrick.docs.demo;
@IocBean
public class User {
private String name = "jetbrick";
public String getName() {
return name;
}
}
@IocBean
public class Hello {
@Inject
private User user;
public void says() {
System.out.println("Hello " + user.getName());
}
}
// 调用代码
public class Test {
public static void main(String args[]) {
MutableIoc ioc = new MutableIoc();
ioc.load(new IocAnnotationLoader("jetbrick.docs.demo"));
Hello hello = ioc.getBean(Hello.class);
hello.says();
}
}
§3. .properties 配置方式
在配置文件中配置,所有 $
开头的对象,将自动加入到 IoC 容器中。
ioc.properties
$user = jetbrick.docs.demo.User
$user.name = WORLD
$hello = jetbrick.docs.demo.Hello
$hello.user = $user
Java 代码
package jetbrick.docs.demo;
public class User {
private String name;
public String getName() {
return name;
}
}
public class Hello {
private User user;
public void says() {
System.out.println("Hello " + user.getName());
}
}
// 调用代码
public class Test {
public static void main(String args[]) {
MutableIoc ioc = new MutableIoc();
ioc.load(new PropertiesIocLoader("classpath:app.properties"));
Hello hello = (Hello) ioc.getBean("hello");
hello.says(); // got "Hello WORLD"
}
}
§4. 自定义配置文件?
既然我们可以支持 .properties
配置文件,那么我们也可以支持 XML,JSON 等格式的配置文件。
其实我们只要实现一个 jetbrick.ioc.loader.IocLoader
接口的自定义加载器就可以了。
public interface IocLoader {
public void load(MutableIoc ioc);
}
具体怎么实现,可以参考:jetbrick.ioc.loader.IocAnnotationLoader
或者 jetbrick.ioc.loader.IocPropertiesLoader
。
同时,如果大家实现自己的 IocLoader,欢迎 share 相应的实现。