小编man*_*una的帖子

Spring - 如何注入具体的接口实现?

我需要通过@Autowired注入服务类的具体实现.

服务界面:

public interface PostService {
...
}
Run Code Online (Sandbox Code Playgroud)

执行:

@Service("postServiceImpl")
public class PostServiceImpl implements PostService {
...
}
Run Code Online (Sandbox Code Playgroud)

服务中的方法使用@Transactional注释

现在我想将postServiceImpl注入我的控制器 - 因为我需要使用实现中的一个方法,而不是在接口中:

@Autowired
@Qualifier("postServiceImpl")
private PostServiceImpl postService;
Run Code Online (Sandbox Code Playgroud)

我收到NoSuchBeanDefinitionException并带有以下消息:

没有为依赖项找到类型为[(...).PostServiceImpl]的限定bean:期望至少有一个bean可以作为此依赖项的autowire候选者.

当我将控制器中的字段更改为:

private PostService postService
Run Code Online (Sandbox Code Playgroud)

它工作,但我不能使用PostServiceImpl中的特定方法.

java service spring dependency-injection autowired

9
推荐指数
1
解决办法
4887
查看次数

google-api-client 和 google-api-services 之间的版本兼容性

有一个项目依赖于google-api-clientgoogle-api-services-drive

google-api-client版本看起来像这样:1.23.0,并且 github 上有这个库的变更日志。

google-api-services-drive版本看起来像这样:v3-rev105-1.23.0,并且没有明确的变更日志。rev同一版本号有许多不同的后缀,例如v3-rev116-1.23.0v3-rev135-1.23.0等。看起来它是每周构建的,并且修订号不断增加。

问题是:客户端和服务版本如何兼容?是否可以安全地假设,任何具有版本的服务都v3-revXXX-1.23.0与 client 兼容1.23.0,并且任何具有版本的 api-servicev3-revYYYYMMDD-1.32.1都与 api-client 兼容1.32.1

java versioning google-api-java-client

7
推荐指数
1
解决办法
5188
查看次数

ArchUnit - 确保方法参数被注释

我正在尝试编写一个 ArchUnit 测试规则,该规则应确保使用@ComponentInterface注释注释的接口具有使用注释注释的方法参数@Input。像这样:

ArchRule rule =
        methods()
            .that()
            .areDeclaredInClassesThat()
            .areInterfaces()
            .and()
            .areDeclaredInClassesThat()
            .areAnnotatedWith(ComponentInterface.class)
            .should()
            .haveRawParameterTypes(
                allElements(CanBeAnnotated.Predicates.annotatedWith(Input.class)));
Run Code Online (Sandbox Code Playgroud)

界面如下所示:

@ComponentInterface
public interface AdminComponent {
  void login(@Input(name = "loginString") String loginString);
}
Run Code Online (Sandbox Code Playgroud)

但测试失败并出现如下错误: Method < com.some.package.AdminComponent.login(java.lang.String)> does not have raw parameter types all elements annotated with @Input in (AdminComponent.java:0)

在这种情况下,规则应该如何才能正常工作?

PS 经过一些调试后,发现hasRawParameterTypes检查参数类型(类)是否被注释,而不是方法参数本身。因此它查看String类并发现它没有用@Input注释。很高兴知道,但这并不能解决问题。

java annotations archunit

5
推荐指数
1
解决办法
2746
查看次数

OSX 10.7下的ubiquityIdentityToken的等价物

我正在尝试将iCloud支持添加到我的iOS-5.1应用程序中,根据Apple的iCloud设计指南 "准备使用iCloud的应用程序"部分.它说:

在应用程序启动过程的早期 - 在应用程序中:didFinishLaunchingWithOptions:方法(iOS)或applicationDidFinishLaunching:方法(OS X),通过调用NSFileManager方法ubiquityIdentityToken检查iCloud可用性,如下所示:

id currentiCloudToken = [[NSFileManager defaultManager] ubiquityIdentityToken];

问题是,这个方法(ubiquityIdentityToken)在OS X v10.8及更高版本中可用,我只安装了10.7.4.

如果我在10.7下进行开发,是否有任何解决方法或其他解决方案?为什么这种方法可用性与OSX版本相关,而不是iOS版本?

nsfilemanager ios icloud

1
推荐指数
1
解决办法
689
查看次数

忽略指定字符的特定长度的正则表达式

假设我们有一些定义长度的字符串,其中可能包含一些分隔符,仅用于用户友好的视图。

示例:9 位字符串“123456789”,可以显示为“123,456,789”或“123.456.789”或“1-234-5-67-89”或“123 456 789”

我需要的是一个正则表达式,它可以计算长度而忽略分隔符。类似的东西[\d|,\.\-\s]{9},但只有 \d 计入 {9} (允许任意数量的分隔符......可选地,分隔符不应超过连续两个)

regex

0
推荐指数
1
解决办法
1164
查看次数