@Inject注解是JavaEE 6标准的依赖注入(Dependency Injection)注解,和@Autowired注解类似。当@Inject注解标记在setter方法上时,它表示使用依赖注入方式将指定的Bean对象注入到setter方法中对应的属性中。
例如,我们定义了一个UserService接口和其实现类,代码如下:
public interface UserService {
void setUserDao(UserDao userDao)
}
@Service
public class UserServiceImpl implements UserService {
private UserDao userDao;
@Override
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
}
在上面的代码中,UserServiceImpl类实现了UserService接口,它的setter方法setUserDao()使用了@Inject注解,它表示将UserDao对象注入到UserServiceImpl类中的userDao属性中。
当Spring容器启动时,它会自动扫描UserServiceImpl类,并初始化其实例。此时,Spring容器会查找容器中所有实现UserDao接口的Bean对象,并自动注入到UserServiceImpl对象的userDao属性中。这样,在其他组件中调用UserService接口的方法时,就可以通过userDao属性来访问和操作数据库,实现业务逻辑的处理。