SpringDI--依赖注入(注解方式)
Posted jumpkin1122
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringDI--依赖注入(注解方式)相关的知识,希望对你有一定的参考价值。
Spring中提供一些作用在类上:
@Component //每个层都可以,作用在类上 @Controller //作用在web层 @Service //作用在业务层 @Repository //作用在持久层 这三个注解都放在每层的类上面,会创建对应的对象,Component可以每层类上但建议使用其他三个注解增强
属性注解:
@Value //用于注入基本类型 @Autowired //用于对象注入,默认按类型进行自动装配 @Qualifier //用于对象注入,按名称注入 @Resource //相当于@Autowired与Qualifier一起使用,JDK提供的注解,Spring支持
作用范围
//Bean的作用范围注解,作用在类上,singleton:单例(默认) prototype:多例 @Scope(value="prototype") //Bean的生命周期注解,作用在方法上 @PostConstruct //相当于init-method @PreDestroy //相当于destroy-method
实现注解方式
UserService:
package com.spring.demo04; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * 组件注解,标记该类 * 相当于:<bean id="userService" class="com.spring.demo04.UserService"> */ @Component(value="userService") public class UserService //属性注解:基本数据类型 @Value(value="业务层") private String name; //@Resource(name="userDao") JDK提供的注解,spring支持 //对象注解:按类型自动装配 @Autowired @Qualifier(value="userDao") //也可以不写,一旦写名称必须一致 private UserDao userDao; public void save() System.out.println(name+"启动。。。"); userDao.save();
UserDao:
package com.spring.demo04; import org.springframework.stereotype.Repository; /** * UserDao交给IOC容器 * 相当于:<bean id="userDao" class="com.spring.demo04.UserDao"> */ @Repository(value="userDao") public class UserDao public void save() System.out.println("持久层启动。。。。");
配置文件设置扫描该类属于的包:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 开启注解的扫描:扫描该包下的所有类 --> <context:component-scan base-package="com.spring.demo04" /> </beans>
测试:
package com.spring.demo04; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestDI @Test public void run() //创建容器对象,加载配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //获取userService对象 UserService userService = (UserService) context.getBean("userService"); //调用save方法 userService.save();
运行结果:
以上是关于SpringDI--依赖注入(注解方式)的主要内容,如果未能解决你的问题,请参考以下文章
注意细节,阿里架构师一文详解SpringDI的四种依赖注入方式
Spring 依赖注入(DI)详解 [Spring][依赖注入的 6 种实现方式][setter注入][构造器注入][注解注入][自动装配注入][静态工厂注入][实例工厂注入]