16-注解开发依赖注入

在注解开发中,依赖注入是一种常见的实现方式。通过使用注解,我们可以将各个组件之间的依赖关系进行解耦,即不再需要手动管理组件之间的依赖关系,而是由 Spring 容器自动完成。

一、引用类型的依赖注入

1、@Autowired

@Autowired 注解用于自动装配 Bean。通过在属性、构造函数或方法上使用 @Autowired 注解,Spring 容器会自动将对应的 Bean 实例注入到目标对象中。 

例如,我们可以在定义一个 Service 类时,使用 @Autowired 注解注入一个 DAO 对象:

@Service
public class UserService {
    
    @Autowired
    private UserDao userDao;
    
    // ...
}

在这个例子中,Spring 会将名为 "userDao" 的 Bean 自动装配到 UserService 的 userDao 属性中。

2、@Qualifier

当存在多个实现同一个接口的 Bean 实例时,@Qualifier 可以指定具体要装配的 Bean 实例。其用法是在 @Autowired 注解后面使用 @Qualifier 注解,并指定具体的 Bean 名称。

例如,假设我们有两个实现了 UserDao 接口的 Bean,其名称分别为 userDaoA 和 userDaoB,我们可以这样指定装配 userDaoA:

@Service
public class UserService {
    
    @Autowired
    @Qualifier("userDaoA")
    private UserDao userDao;
    
    // ...
}

3、@Resource

@Resource 注解也可以用于装配 Bean。与 @Autowired 注解不同的是,@Resource 注解可以指定具体要装配的 Bean 的名称或属性。

例如,我们可以这样使用 @Resource 指定一个名为 "userService" 的 Bean:

@Service
public class MyService {
    
    @Resource(name = "userService")
    private UserService userService;
    
    // ...
}

在这个例子中,Spring 会将名为 "userService" 的 Bean 装配到 MyService 的 userService 属性中。

二、基本数据类型的依赖注入

使用 @Value 注解可以将指定的值注入到一个组件的属性中。对于基本数据类型,可以直接将其作为注解参数传递:

@Component
public class MyComponent {
    
    @Value(123)
    private int myInt;
    
    @Value("123.45")
    private double myDouble;
    
    @Value("true")
    private boolean myBoolean;
    
    // ...
}

三、注入配置文件的方法

在注解开发中,依赖注入配置文件是一种常见的实现方式。通过使用配置文件,我们可以将一些需要配置的参数、常量或资源统一保存到文件中,然后通过注解的方式将这些配置项注入到组件中,从而方便地对组件进行初始化或者赋值。

1.定义配置文件

常见的配置文件格式包括 .properties 和 .xml 两种。其中,.properties 是一种简单的键值对格式,适合用于保存一些基本类型或者字符串等简单类型的配置项,例如:

db.url=jdbc:mysql://localhost:3306/mydb
db.user=root
db.password=123456

而 .xml 则是一种更加复杂、结构化的格式,适合用于保存一些对象或者复杂类型的配置项。例如: 

<database>
    <url>jdbc:mysql://localhost:3306/mydb</url>
    <user>root</user>
    <password>123456</password>
</database>

2.在注解开发中依赖注入配置文件

在注解开发中,我们可以使用 @Value 注解将配置文件中的参数或常量注入到组件属性中。例如:

@Component
public class MyComponent {
    
    @Value("${db.url}")
    private String dbUrl;
    
    @Value("${db.user}")
    private String dbUser;
    
    @Value("${db.password}")
    private String dbPassword;
    
    // ...
}

在这个示例中,我们定义了一个 MyComponent 组件,并使用 @Value 注解将三个配置项(分别为数据库连接 URL、用户名和密码)注入到对应的属性中。其中,${} 中的内容是需要注入的配置项的名称,名称与配置文件中的键名相对应。

需要注意的是,使用 @Value 注解时需要添加 @PropertySource 注解指定要读取的配置文件。例如:

@Configuration
@PropertySource("classpath:config.properties")
public class AppConfig {
    
    // ...
}

定义了一个 AppConfig 配置类,并使用 @PropertySource 注解指定了要读取的配置文件名为 "config.properties"。在 Spring 加载该配置类时,会自动读取该配置文件并将其中的配置项存储到容器中,之后通过 @Value 注解就可以注入这些配置项了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值