小编Lan*_*dei的帖子

春天@Autowired不工作

我有一些自动注释的问题.我的应用程序如下所示:

这是控制器:

@Controller
public class MyController {
    @Autowired
    @Qualifier("someService")
    private SomeService someService;

    ....
}
Run Code Online (Sandbox Code Playgroud)

这是一个服务层:

public interface SomeService {
    ...
}

@Service
public class SomeServiceImpl implements SomeService{    
    @Autowired
    @Qualifier("myDAO")
    private MyDAO myDAO;

    ....
}
Run Code Online (Sandbox Code Playgroud)

和DAO层:

public interface MyDAO{
    ....        
}

@Repository
public class JDBCDAOImpl implements MyDAO {    
    @Autowired
    @Qualifier("dataSource")
    private DataSource dataSource;    
    ....
}
Run Code Online (Sandbox Code Playgroud)

这是一个app-service.xml文件:

....
<bean id="propertyConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
      p:location="/WEB-INF/jdbc.properties" />

<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource"
      p:driverClassName="${jdbc.driverClassName}"
      p:url="${jdbc.url}"
      p:username="${jdbc.username}"
      p:password="${jdbc.password}"/>

<bean id="SomeService" class="com.service.SomeServiceImpl" />    
<bean id="myDAO" class="com.db.JDBCDAOImpl" />    
Run Code Online (Sandbox Code Playgroud)

所以......当我启动一个web-app时,MyController自动正确(SomeServiceImpl类对象正确注入someService字段),但someService的myDAO feild有空值(未正确注入).

你能帮我找个问题吗?

PS它很有意思,但是当我将myDAO中的"bean …

spring annotations spring-mvc autowired

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

较高kinded类型的隐式参数解析

请考虑以下代码:

object foo {

    trait Bar[Q[_]]

    implicit object OptionBar extends Bar[Option]

    def test[T, C[_]](c: C[T])(implicit bar: Bar[C]) = ()

    def main(args: Array[String]) {
      test(Some(42): Option[Int])  //???
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我需要输入Some(42)作为Option [Int],否则隐式对象OptionBar将不会被解析(因为预期会改为Bar [Some]).有没有办法避免显式输入,所以我在测试中得到隐含的OptionBar对象,即使我用Some或None提供测试?

[澄清]

  • 我在这里使用Option作为例子,如果我有一个Bar抽象类等它也应该工作.
  • 比如,当其他不相关的条在范围内时,解决方案也应该有效 implicit object listBar extends Bar[list]

[更新]

似乎使Bar的参数逆变成功了:

object foo {

  trait Bar[-Q[_]] //<---------------

  implicit object OptionBar extends Bar[Option]
  implicit object ListBar extends Bar[List]

  def test[T, C[_]](c: C[T])(implicit bar: Bar[C]) = ()

  def main(args:Array[String]) {
    test(Some(42))
  }
}
Run Code Online (Sandbox Code Playgroud)

但当然这是对Bar的可能性的严重限制,所以我仍然希望得到更好的答案.

scala implicit higher-kinded-types

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

当类型类只有一个时,具有2个参数的类型的类型类实例

考虑以下类型类:

class Listable a where
   asList :: a t -> [t]
Run Code Online (Sandbox Code Playgroud)

使用一个参数为类型创建实例很容易:

instance Listable [] where
   asList = id

instance Listable Maybe where
   asList (Just x) = [x]
   asList Nothing = []
Run Code Online (Sandbox Code Playgroud)

现在,我将如何为具有两个相同类型参数的对创建实例?当然我可以做一些包装:

data V2 a = V2 a a

v2 (p,q) = V2 p q

instance Listable V2 where
   asList (V2 p q) = [p,q]
Run Code Online (Sandbox Code Playgroud)

现在我可以写出像这样的东西asList $ v2 (47, 11),但这种方式会失败.

有没有办法将对的类型限制为两个类型参数相等的情况,并为此编写Listable实例?如果没有,通常的解决方法是什么?

haskell typeclass

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

Monad for Const?

为什么没有monad实例Control.Applicative.Const?以下定义是正确的,还是违反了monad法则?

instance Monoid a => Monad (Const a) where
  return _ = Const mempty
  (Const x) >>= _ = Const x
Run Code Online (Sandbox Code Playgroud)

你能想到任何有用的应用吗?

monads haskell

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

Java 8编译器错误 - 如何获取更多信息?

我玩过Java 8 ea b72,但是我遇到了编译器错误.有没有办法从javac获取更多信息,例如它目前正在处理的文件列表?如果我有一个大概的想法,我可以找到一个解决方法,直到问题得到解决.

只是为了记录,这里是堆栈跟踪(如果在IntelliJ IDEA,BTW之外编译,它看起来相似):

An exception has occurred in the compiler (1.8.0-ea). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport)  after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report.  Thank you.
java.lang.AssertionError: arraycode A
    at com.sun.tools.javac.jvm.Code.arraycode(Code.java:297)
    at com.sun.tools.javac.jvm.Gen.makeNewArray(Gen.java:1827)
    at com.sun.tools.javac.jvm.Gen.visitNewArray(Gen.java:1800)
    at com.sun.tools.javac.tree.JCTree$JCNewArray.accept(JCTree.java:1482)
    at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:893)
    at com.sun.tools.javac.jvm.Gen.genArgs(Gen.java:912)
    at com.sun.tools.javac.jvm.Gen.visitApply(Gen.java:1746)
    at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1391)
    at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:893)
    at com.sun.tools.javac.jvm.Gen.visitReturn(Gen.java:1715)
    at com.sun.tools.javac.tree.JCTree$JCReturn.accept(JCTree.java:1310)
    at com.sun.tools.javac.jvm.Gen.genDef(Gen.java:683)
    at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:718)
    at com.sun.tools.javac.jvm.Gen.genStat(Gen.java:704)
    at com.sun.tools.javac.jvm.Gen.genStats(Gen.java:755)
    at com.sun.tools.javac.jvm.Gen.visitBlock(Gen.java:1090)
    at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:835) …
Run Code Online (Sandbox Code Playgroud)

java compiler-errors javac java-8

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

Haskell随机生成器......如何使用更容易?

我遇到了与Haskell Random generator相关的问题.在大学里,我必须一直处理Java,所以现在我已经腐败了.我正在Haskell开发一款游戏,现在我面临的是"有机会做某事",这种机会需要像Int -> Bool.在Java中,我会做到的

new Random().nextInt(100) 
Run Code Online (Sandbox Code Playgroud)

问题解决了!在Haskell中,我必须在monad IO中选择一些东西或者使用种子.这些都不是我想要的.我真的不想在我的纯模型中使用IO monad,种子很难用,因为我每次都需要记住我的新种子......

有没有简单的像Java的随机?

random haskell

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

Traversable1中的上下文边界

semigroupoids包中,我发现了以下定义:

class (Foldable1 t, Traversable t) => Traversable1 t where
  traverse1 :: Apply f => (a -> f b) -> t a -> f (t b)
  sequence1 :: Apply f => t (f b) -> f (t b)

  sequence1 = traverse1 id
  traverse1 f = sequence1 . fmap f
Run Code Online (Sandbox Code Playgroud)

为什么上下文边界设置为Apply(Applicative没有pure)而不是Functor?显然你需要覆盖其中一个定义,所以这只是"只"一个不可能Functor吗?

haskell

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

加速Haskell中分区的计算

我正在尝试解决Euler问题78,它基本上要求分区函数 p(n)可被1000000整除的第一个数字.

我使用基于五边形数字的欧拉递归公式(这里pents与正确的符号一起计算).这是我的代码:

ps = 1 : map p [1..] where
  p n = sum $ map getP $ takeWhile ((<= n).fst) pents where
    getP (pent,sign) = sign * (ps !! (n-pent)) 

pents = zip (map (\n -> (3*n-1)*n `div` 2) $ [1..] >>= (\x -> [x,-x]))
            (cycle [1,1,-1,-1])
Run Code Online (Sandbox Code Playgroud)

虽然ps似乎产生了正确的结果,但它太慢了.有没有办法加快计算速度,还是需要一种完全不同的方法?

math performance haskell number-theory

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

泛型名称冲突

考虑:

public interface Foo<T> {
    public static class X{}
    public void foobar(T t); 
}

public class Bar<X> {
    Foo<X> foo = new Foo<X>() {
        public void foobar(X t) {}
    };
}
Run Code Online (Sandbox Code Playgroud)

我发现没有办法表达,我的意思是XBar<X>,而不是Foo.Xfoobar(X t)执行.难道就没有其他办法比重命名泛型参数XBar或静态内部类?

java generics name-clash

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

如何在这里避免显式类型签名?

class Listy a b where
   fromList :: [b] -> a
   toList :: a -> [b]
   lifted :: ([b] -> [b]) -> (a -> a) 
   lifted f = fromList . f . toList

data MyString = MyString { getString :: String } deriving Show

instance Listy MyString Char where
  toList = getString
  fromList = MyString
Run Code Online (Sandbox Code Playgroud)

现在我需要写例如lifted (reverse::(String -> String)) (MyString "Foobar").是否有诀窍避免需要类型签名?

haskell typeclass

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