问题列表 - 第3346页

需要模式建议(Hibernate + Guice)

我正在寻找有关如何将运行时依赖项注入从Hibernate检索的JPA实体的建议.我的问题基本上是这样的:

我有一些Transaction对象的不同子类.每个Transaction子类在执行时都有不同的行为,并且需要与环境不同的一组依赖项.这些Transaction对象由Hibernate作为JPA实体进行管理,因此我不能有效地使用Guice进行依赖注入来填充实例及其环境依赖性,就像我在其余的应用程序中一样.

为了解决这个问题,我采用了一种类似于访问者模式的方法,如下所示:

public abstract class Transaction {
    // ...snip...
    public abstract void apply(Transactor transactor);
}

public class TransactionA extends Transaction {
    public void apply(Transactor transactor) {
        transactor.execute(this);
    }
}

public class TransactionB extends Transaction {
    public void apply(Transactor transactor) {
        transactor.execute(this);
    }
}
// other Transaction subclasses with the same boilerplate

public interface Transactor {
    public void execute(TransactionA trans);
    public void execute(TransactionB trans);
    // corresponding methods for other transaction types.
}

public class BeginTransactor {
     @Inject
     private Foo execAdep; …
Run Code Online (Sandbox Code Playgroud)

java design-patterns dependency-injection

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

什么是Ruby Gotchas新手应该被警告?

我最近学习了Ruby编程语言,总而言之,它是一门很好的语言.但我很惊讶地发现它并不像我预期的那么简单.更准确地说,"最不惊讶的规则"对我来说似乎并不受到尊重(当然这是非常主观的).例如:

x = true and false
puts x  # displays true!
Run Code Online (Sandbox Code Playgroud)

和着名的:

puts "zero is true!" if 0  # zero is true!
Run Code Online (Sandbox Code Playgroud)

你会警告一个Ruby新手的其他"问题"是什么?

ruby

106
推荐指数
16
解决办法
1万
查看次数

在同一个html文件中使用两个css文件

是否可以在同一个HTML文件中使用2个具有相同名称的CSS类?如果是这样,你如何在造型元素之间区分两者?

css css-specificity

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

C++实例初始化语法

鉴于这样的类:

class Foo {
public:
    Foo(int);

    Foo(const Foo&);

    Foo& operator=(int);

private:
    // ...
};
Run Code Online (Sandbox Code Playgroud)

这两条线是完全相同的,还是它们之间有细微差别?

Foo f(42);

Foo f = 42;
Run Code Online (Sandbox Code Playgroud)

编辑:通过在原始问题中使Foo构造函数"显式",我感到困惑.我删除了,但欣赏答案.

我还添加了一个复制构造函数的声明,以明确复制可能不是一个简单的操作.

我真正想知道的是,根据C++标准,"Foo f = 42"会直接调用Foo(int)构造函数,还是会调用复制构造函数?

看起来fasih.ahmed有我正在寻找的答案(除非它是错的).

c++ initialization

11
推荐指数
2
解决办法
9259
查看次数

什么是ASP.NET MVC?

任何人都可以解释我,什么是MVC,为什么我们使用它以及我们如何使用它.使用这个的好处?我们可以在ASP.NET 2.0中使用ASP.NET MVC(VS 2005)

asp.net asp.net-mvc visual-studio-2005

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

如何在启动时在Tomcat配置中指定系统属性?

我知道我可以通过使用-D参数传递参数来为Tomcat指定系统属性,例如" -Dmy.prop = value ".

我想知道是否有更简洁的方法通过在context.xml文件或其他一些tomcat配置文件中指定属性值来实现此目的.我想这样做是因为,首先,跟踪我的属性更容易,其次,我有多个上下文运行,我不知道如何通过-D参数指定特定于上下文的属性.

我使用的是Tomcat 5.5版.

tomcat properties system-properties context.xml

73
推荐指数
6
解决办法
17万
查看次数

在C#中将字符串转换为画笔/画笔颜色名称

我有一个配置文件,开发人员可以通过传入一个字符串来指定文本颜色:

 <text value="Hello, World" color="Red"/>
Run Code Online (Sandbox Code Playgroud)

而不是有一个巨大的开关语句寻找所有可能的颜色,只是使用类System.Drawing.Brushes中的属性而不是内部我可以这样说:

 Brush color = Brushes.Black;   // Default

 // later on...
 this.color = (Brush)Enum.Parse(typeof(Brush), prasedValue("color"));
Run Code Online (Sandbox Code Playgroud)

除了刷子/画笔中的值不是枚举.所以Enum.Parse没有给我带来快乐.建议?

.net c# graphics brush colors

38
推荐指数
4
解决办法
8万
查看次数

是否有一个标准的C++函数对象来拆分std :: pair?

有没有人知道是否有一个事实上的标准(即TR1或Boost)C++函数对象来访问std :: pair的元素?在过去24小时内,我曾两次希望我有类似keysPerl哈希函数的功能.例如,在std :: map对象上运行std :: transform并将所有键(或值)转储到另一个容器会很不错.我当然可以编写这样一个函数对象,但我更愿意重用那些有很多眼球的东西.

c++ boost tr1 std std-pair

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

获取/设置c ++世界,faux-pas?

我注意到,通过查看boost/stl,甚至阅读一些顶级c ++专家的着作,get/set不是c ++方式.

有没有人在他们的c ++类设计中使用get/set,并且如果这个范例属于c ++世界,有人可以建议一个经验法则吗?

它显然在Java中非常流行,并且使用Property语法糖来模仿c#.

编辑:

在下面的答案中提供的链接之一中阅读了更多相关信息之后,我遇到了至少一个参数,用于保持成员字段的访问者与成员字段的名称相同.也就是说,您可以简单地将成员字段公开为public,而是将其作为类的实例,然后重载()运算符.通过使用set/get,您不仅要强制客户端重新编译,还要实际更改其代码.

不确定我是否喜欢这个想法,对我来说似乎有点太精细了,但更多细节在这里:

C++杀死了Getter/Setter

c++ oop

14
推荐指数
5
解决办法
9697
查看次数

让log4net使用应用程序配置文件来获取配置数据

我想在我的application.config文件中存储log4net配置数据.根据我对文档的理解,我做了以下工作:

  1. 添加对log4net.dll的引用

  2. 在AssemblyInfo.cs中添加以下行:

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    
    Run Code Online (Sandbox Code Playgroud)
  3. 按如下方式初始化记录器:

    private static readonly ILog log = LogManager.GetLogger(typeof(frmWizard));
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我的app.config中有以下代码:

    <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <log4net>
      <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
      </appender>
      <root>
        <level value="INFO" />
        <appender-ref ref="ConsoleAppender" />
      </root>
    </log4net>
Run Code Online (Sandbox Code Playgroud)

但是,当我运行该应用程序时,我在控制台上收到以下错误:

没有找到名为[Consoleappender]的追加器.

如何让log4net从配置文件中读取设置?

谢谢!

c# logging log4net

49
推荐指数
3
解决办法
10万
查看次数