在我的Spring Boot Application中,我用一个调用存储过程的方法实现了以下类。
@Component
@ConfigurationProperties(prefix = "spring")
public class FmTrfUtil {
static int returnVal;
@Value("${spring.datasource.url}")
static String url;
public static int insertFmTrfs(List<String> trfs, String source) {
System.out.println(url);
EntityManager em = Persistence.createEntityManagerFactory("RIStore_FM").createEntityManager();
Session session = em.unwrap( Session.class );
final String[] trfArray = trfs.toArray(new String[trfs.size()]);
final String src = source;
session.doWork( new Work(){
public void execute(Connection conn) throws SQLException {
CallableStatement stmt = null;
OracleConnection oraCon = conn.unwrap(OracleConnection.class);
Array array = oraCon.createARRAY("VARCHAR2_TAB_T", trfArray);
stmt = conn.prepareCall("{? = call FM_TRF_UTIL.process_fm_trf(?,?)}");
stmt.registerOutParameter(1, Types.INTEGER);
stmt.setArray(2, array);
stmt.setString(3, src);
stmt.execute();
returnVal = stmt.getInt(1);
}
});
return returnVal;
}
}
由于调用存储过程需要数据库连接,所以我需要从应用程序加载这些相应的属性值。特性:
spring.profiles.active=dev
spring.datasource.url=jdbc:oracle:thin:@ldap://xxx:389/risdev3, cn=OracleContext,dc=x,dc=net
spring.datasource.username=owner
spring.datasource.password=owner987
基于以下关于类似问题的文章,Spring boot—应用程序中的自定义变量。属性,并在您自己的类和Spring Boot@ConfigurationProperties示例中使用Spring Boot配置属性,我为我的类@ConfigurationProperties(prefix=“Spring”)
(db连接的属性都以“Spring”作为前缀)添加了此注释。然而,当我使用如下的测试类运行它时,我得到了错误“应用程序必须提供JDBC连接”,这意味着应用程序中的属性。不拾取属性。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = RistoreWebApplication.class, initializers = ConfigFileApplicationContextInitializer.class)
public class FmTrfUtilTest {
@Test
public void test() {
List<String> trfs = new ArrayList<String>();
trfs.add("TRF000001");
trfs.add("TRF000002");
int ret = FmTrfUtil.insertFmTrfs(trfs, "SARC");
assertTrue(ret > 0);
}
}
为了使@ConfigurationProperties
正常工作,我还添加了maven dependencyspring boot配置处理器
。为什么它仍然不起作用?我错过了什么?
这里几乎没有什么不对的地方:
@Value
不适用于静态字段如果您想利用Spring Boot配置属性进行数据库连接,而不是像您这样创建EntityManager
:
EntityManager em = Persistence.createEntityManagerFactory("RIStore_FM").createEntityManager();
假设您的依赖项列表中有Spring数据JPA启动器,您应该注入它。
我看到您使用了很多静态
方法和字段。这对Spring不起作用。改为使用依赖项注入,并自动连接所需内容。
Spring Boot提供了一种优雅的方法,可以使用将带有特定键前缀的属性注入Configuration类。这是显示在这里和这里。问题是,如何将前缀属性注入到实例中,如下所示?
我试图向自定义注释中注入一个值,但Spring似乎没有进行评估。
问题内容: 有点卡在这里。我有一个带有3个配置文件的pom。Theese配置文件具有不同的版本名称。我要在构建特定配置文件时将该版本名称注入属性文件。 我的个人资料: 和filter.properties看起来像这样: 怎么做?我通过命令构建项目: 问题答案: 您需要做的是在POM文件的部分中添加一个新部分。 像这样: 这将在指定文件的指定文件夹()内部查找,并在遇到定义的变量时更改文件。 因此,
我有我的Jhipster配置/应用程序属性。java类设置和工作,但不清楚如何将属性值注入url的假客户端注释: 使用@Value在下面不起作用: 有什么想法吗?
在我的microservice Spring Boot项目中,我用@ResponseStatus注释了这个自定义异常: 它工作得很好:当引发异常时,我的控制器返回指定的状态(404),但原因没有得到解决(错误消息是“${message.custom.notFound}”)。 您知道是否有方法将属性文件中的属性注入到此注释中吗? 提前感谢
我做错了什么?我需要组件的完整构造函数吗?这是因为cs是静态的?springboot不是要自动填充这些值吗?