- @Autowired是什么?
依赖注入的地方,前提是被注入的对象和注入的对象都要在Spring中注册为bean(利用注解@Configuration)
public interface HelloWorldService {
void sayHi(String name);
}
public class HelloWorldServiceImpl implements HelloWorldService {
public void sayHi(String message) {
System.out.println(message);
}
}
public class HelloWorldServiceClient {
@Autowired
private HelloWorldService helloWorld;
public void showMessage() {
helloWorld.sayHi("Hello world!");
}
}
- 一个小例子
@Configuration使用Java类进行配置,该类还需要负责在main方法中开启Spring容器。
每个@Configuration注解的类都会在Spring容器中注册成一个Bean,并且Spring会使用CGLib对其进行动态代理;
Spring容器可以有多个@Configuration注解的类;
@Bean的方法创建并返回了对应的bean对象
@Configuration
public class AppRunner {
@Bean
public HelloWorldService createHelloWorldService() {
}
@Bean
public HelloWorldServiceClient createClient() {
return new HelloWorldServiceClient();
}
public static void main(String... strings) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppRunner.class);
HelloWorldServiceClient bean = context.getBean(HelloWorldServiceClient.class);
bean.showMessage();
}
}
-
AnnotationConfigApplicationContext是啥玩意?
AnnotationConfigApplicationContext实现了ApplicationContext接口,代表Spring容器,实现了实例化、配置、组装等功能,输入为注解的类。 -
输出
Hello world!
网友评论