Spring 基础知识 - 依赖注入
所谓的依赖注入是指容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖。
依赖注入主要目的是为了解耦,体现了一种“组合”的理念。
无论是xml配置、注解配置还是Java配置,都被称为配置元数据,所谓的元数据即描述数据的数据。
声明Bean的注解:
@Component组件,没有明确的角色
@Service在业务逻辑层使用
@Repository 在数据访问层使用
@Controller 在展现层使用
注入Bean的注解:
@Autowired: spring提供的注解
@Inject: JSR-330提供的注解
@Resource: JSP-250提供的注解
代码演示:
1. 声明一个业务类
package com.net888.ioc; import org.springframework.stereotype.Service; @Service public class FunctionService { public String sayHello(String word){ return "Hello " + word + "!"; } }
2. 注入一个业务类
package com.net888.ioc; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UseFunctionService { @Autowired FunctionService functionService; public String SayHello(String word){ return functionService.sayHello(word); } }
3. 声明一个配置类
package com.net888.ioc; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.net263.ioc") public class DiConfig { }
4. 测试类
package com.net888.ioc; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class RunApp { public static void main(String[] args){ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DiConfig.class); UseFunctionService useFunctionService = context.getBean(UseFunctionService.class); System.out.println(useFunctionService.SayHello("IOC... DI")); } }
5. 运行结果