我有一个场景,在这样的抽象类的构造函数中调用autowired为null:
public abstract class AbstractClass{
@Autowired
@Qualifier("proId")
protected Prop prop;
public AbstractClass(){
prop.getName();
Run Code Online (Sandbox Code Playgroud)
以上在部署时抛出NullException.
但是实例化后调用autowired属性时,以下工作
public abstract class AbstractClass{
@Autowired
@Qualifier("proId")
protected Prop prop;
public void Init(){
prop.getName();
}
}
public class DefaultClass extends AbstractClass(){
...
@autowired
DefaultClass dc ;
...
dc.Init();
Run Code Online (Sandbox Code Playgroud)
我怎样才能让第一个案例起作用?
我从外部系统获得的信息总是以下列格式返回给我:

我需要将此信息从object [,]转换为"|"上的数组拆分.我一直在VB中使用LINQ来获取这些信息:
Dim vSAPdataTemp(,) As Object = Local_SAPtableData.Data
Dim vLinq = From TempResult In vSAPdataTemp
Select Value = Array.ConvertAll(TempResult.ToString.Split(RFC_DelimiterChar),
Function(vVal) CObj(vVal.ToString.Trim))
Dim vNewSAPdata() As Object = vLinq.ToArray
Run Code Online (Sandbox Code Playgroud)
但现在我转向C#,我遇到了以下错误:

使用此代码时:
var vSAPdataTemp = Local_SAPtableData.Data;
Local_SAPtableData.FreeTable();
fw.gcCleaner();
Local_SAPtableData = null;
var vLinq = (from TempResult in (vSAPdataTemp as Object[,])
select string strValue = Array.ConvertAll(TempResult.Split(stcVariables.strSapRfcDelimiterChar),
vVal => (vVal as object).ToString().Trim()));
var vNewSAPdata = vLinq.ToArray<string>();
Run Code Online (Sandbox Code Playgroud)
此问题有哪些(如果有)解决方法?
我有一个 bean,只有在属性为 false 或未定义时才应该加载它。如果我注释它:
@ConditionalOnProperty(prefix = "myFeature1", name = "enable", havingValue = "false")
Run Code Online (Sandbox Code Playgroud)
该属性myFeature1.enable必须显式设置为false. 该属性在带@ConfigurationProperties注释的类中被定义为一个带有错误默认值的布尔值,但在应用程序启动时似乎处理该注释为时已晚,因此该myFeature1.enable属性必须用作Environment.
我尝试添加注释:
@ConditionalOnProperty(prefix = "dlcm.module.auth", name = "enable", matchIfMissing = true)
Run Code Online (Sandbox Code Playgroud)
但@ConditionalOnProperty不是可重复的注释。
我也试过使用 @ConditionalOnExpression
@ConditionalOnExpression("'${dlcm.module.auth.enable}' == 'false' or '${dlcm.module.auth.enable}' == ''")
Run Code Online (Sandbox Code Playgroud)
但是属性占位符似乎被替换为空字符串以外的其他内容。
所以我的问题是:仅当属性为 false 或未定义时如何加载 bean?
我有一个可以在 SQL Developer 中运行的小型更新查询。
UPDATE people
SET months = 8
WHERE number = 599
Run Code Online (Sandbox Code Playgroud)
非常坦率的。它有效 - 这在 C# 中也有效。问题是当我想使用参数(适用于数字但不适用于月份)时,它将停止工作。
我在 C# 中有这样的代码:
using (OracleConnection con = new OracleConnection(connectionString))
{
con.Open();
OracleCommand command = con.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = "UPDATE people " +
"SET months = :months " +
"WHERE number = :number";
command.Parameters.Add(":number", OracleDbType.Int32).Value = number;
command.Parameters.Add(":months", OracleDbType.Int32).Value = months;
command.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
它们都是oracle中的Number类型,我尝试将OracleDbType更改为Decimal,但几乎一切都没有成功。奇怪的是, :number 参数有效,但几个月没有更新(它不会崩溃,只是不更新)。但是,如果我将 :months 参数更改为 7 这样的静态值 - 它将起作用。
c# ×2
java ×2
spring ×2
autowired ×1
constructor ×1
linq ×1
odp.net ×1
oracle ×1
performance ×1
sap ×1
spring-bean ×1
spring-boot ×1
sql ×1
sql-update ×1