我试图在我的Micronaut应用程序中使用jOOQ,并将jOOQ DSLContext作为一个注入bean自动提供给我的构造函数,但它无法找到该bean。
我在application.yml中配置了数据源以连接到postgres db,并声明了如下构造函数:
@Singleton
public class RepositoryImpl implements Repository
{
private final DSLContext context;
public RepositoryImpl(DSLContext context)
{
this.context = context;
}
}
datasources:
default:
url: "jdbc:postgresql://localhost:5432/my_db"
username: "user"
password: "password"
driver-class-name: "org.postgresql.Driver"
我在我的构建中包含了以下依赖项。gradle
compile 'io.micronaut.configuration:micronaut-jooq'
runtime 'org.postgresql:postgresql:42.2.4'
我希望可以访问DSLContext并在RepositoryImpl类中编写查询,但在尝试使用implementation类时,代码失败了,但出现以下异常:
Caused by: io.micronaut.context.exceptions.NoSuchBeanException: No bean of type [org.jooq.DSLContext] exists. Make sure the bean is not disabled by bean requirements (enable trace logging for 'io.micronaut.context.condition' to check) and if the bean is enabled then ensure the class is declared a bean and annotation processing is enabled (for Java and Kotlin the 'micronaut-inject-java' dependency should be configured as an annotation processor).
有没有人能够成功地使用这个bean,就像这里的micronaut-sql指南中所描述的那样?https://micronaut-projects.github.io/micronaut-sql/snapshot/guide/index.html#jooq
dslcontext
存在于org.jooq.configuration
上,因此首先必须实例化后一个。
您可以定义一个用@factory
注释的类,并将javax.sql.datasource
注入其包含Micronaut数据源配置的构造函数。之后,您应该在该类中定义一个方法(用@singleton
注释),该方法应该返回一个org.jooq.configuration
。在此方法中,您可以配置jOOQ,基本上您可以使用defaultconfiguration()
,但是您必须通过在其上调用setSQLDialect(SqlDialt.Postgres)
来设置您的SQL方言,您还必须设置您的数据源(set(datasource)
import io.micronaut.context.annotation.Factory;
import org.jooq.Configuration;
import org.jooq.SQLDialect;
import org.jooq.impl.DefaultConfiguration;
import javax.inject.Singleton;
import javax.sql.DataSource;
@Factory
public class JooqConfigurationFactory {
private final DataSource dataSource;
public JooqConfigurationFactory(DataSource dataSource) {
this.dataSource = dataSource;
}
@Singleton
public Configuration configuration() {
DefaultConfiguration configuration = new DefaultConfiguration();
configuration.setSQLDialect(SQLDialect.POSTGRES);
configuration.set(dataSource);
return configuration;
}
}
您的存储库将如下所示:
import org.jooq.Configuration;
import org.jooq.DSLContext;
public class ExampleRepository {
private final DSLContext context;
public ExampleRepository(Configuration config) {
this.context = config.dsl();
}
}
创建任何新的 Android 项目后,Eclipse 会自动创建一个“appcompat_v7”项目,而 /src 下没有任何文件。我不知道Eclipse是如何或为什么创建这个项目的。我也得到了一个奇怪的错误。 正如你看到的AndroidManifest。项目中存在xml! EDIT1:清理项目后,奇怪的错误消失了,但我仍然想知道为什么创建appcompat_v7。 EDIT2:我还注意到Ecli
使用 @vue/cli 推荐用脚手架工具 @vue/cli 来创建一个使用 vue-loader 的项目: npm install -g @vue/cli vue create hello-vue cd hello-vue npm run serve # ready to go!
点击顶部导航右上角"+"按钮,可进入创建项目页。 主要操作步骤: 选择目录:首先在本地文件浏览器中选择需要创建项目的目录,点击创建 选择模板:可选择预置脚手架或自定义脚手架 输入配置:输入项目需要的初始化信息 依赖安装:配置完成后系统会自动执行依赖安装 创建完成 San CLI UI中的文件浏览器可实现功能: 目录切换:可以通过点击路径切换,或者直接点击编辑后输入本地路径 目录收藏:对本地路径进行
创建 Rust 项目 创建项目 我们首先创建一个整个项目的目录,并在工作目录中首先创建一个名为 rust-toolchain 的文件,并在其中写入所需要的工具链版本: rust-toolchain nightly-2020-06-27 之后在目录内部使用 cargo new 命令在我们的项目目录内创建一个新的 Rust 项目 os,命令如下: 运行命令 cargo new os 这里我们把项目
首先,打开Android Studio并选择Create new Project,然后它会让你输入一个名字,你可以任意取一个名字,比如:Weather App。然后你需要输入公司域名。如果你不会真正发布这个app,这个字段就不是特别重要了,但是如果你有的话可以使用自己的域名。然后任意选择一个目录作为这个项目的保存地址。 下一步,它会让你选择最小的API版本。我们选择API 15,因为我们有一个库需
firstServlet.java的代码- 在这个文件中,web-app标记显示了一条带有错误消息的红线-web-app元素是web应用程序的部署描述符的根。 来源:web-app_2_3.dtd 元素类型“web-app”的内容必须与“(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-ma