1.概念
(1).DI:依赖注入
==>容器负责创建对象和维护对象间的依赖关系
(2).IOC:控制翻转
==>为了解耦
注:IOC是通过DI实现的
(3).IOC负责创建Bean,并通过容器将功能类Bean注入到所需要的Bean中
(4).Bean的初始化,配置,依赖管理全部交给Spring容器
2.注解
由1知道,Spring容器负责了容器的声明和注入,哪些注解用于声明,哪些注解用于注入呢?
(1).声明Bean的注解
@Component,@Service,@Repository,@Controller
(2).注入Bean的注解
@Autowired,@Inject,@Resource
3.依赖注入的示例
package highlight_spring4.chi1.di;
import org.springframework.stereotype.Service;
/**
* 编写功能类的Bean
*
*/
@Service
public class FunctionService {
public String sayHello(String world){
return "Hello" + world + " !";
}
}
package highlight_spring4.chi1.di;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 编写功能类的Bean
*
*/
@Service
public class UseFunctionService {
@Autowired
FunctionService functionService;
public String SayHello(String world) {
return functionService.sayHello(world);
}
}
package highlight_spring4.chi1.di;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* 配置类
*/
@Configuration
@ComponentScan("highlight_spring4.chi1.di")
public class DiConfig {
}
package highlight_spring4.chi1.di;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* 运行类
*/
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DiConfig.class);
UseFunctionService useFunctionService = new UseFunctionService();
useFunctionService = context.getBean(UseFunctionService.class);
System.out.println(useFunctionService.SayHello("Hello world"));
context.close();
}
}