小编Ort*_*kni的帖子

Spring在抽象类construtor中自动化

我有一个场景,在这样的抽象类的构造函数中调用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)

我怎样才能让第一个案例起作用?

java spring constructor autowired

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

使用LINQ将数组对象[,]转换为数组

我从外部系统获得的信息总是以下列格式返回给我:

SAP数据

我需要将此信息从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#,我遇到了以下错误:

LINQ错误

使用此代码时:

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)

此问题有哪些(如果有)解决方法?

c# linq performance sap

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

仅当属性为 false 或未定义时如何加载 bean?

我有一个 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?

java spring spring-bean spring-boot spring-properties

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

更新语句在 SQL Developer 中有效,但在 C# 中无效

我有一个可以在 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# sql oracle odp.net sql-update

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