相关疑难解决方法(0)

Spring:为什么我们自动连接接口而不是实现的类?

interface IA
{
  public void someFunction();
}

@Resource(name="b")
class B implements IA
{
  public void someFunction()
  {
    //busy code block
  }
  public void someBfunc()
  {
     //doing b things
  }
}

@Resource(name="c")
class C implements IA
{
  public void someFunction()
  {
    //busy code block
  }
  public void someCfunc()
  {
     //doing C things
  }
}

class MyRunner
{

  @Autowire
  @Qualifier("b") 
  IA worker;

  worker.someFunction();
}
Run Code Online (Sandbox Code Playgroud)

谁可以给我解释一下这个.

  • spring如何知道要使用哪种多态类型.
  • 我需要@Qualifier还是@Resource
  • 为什么我们自动连接接口而不是实现的类?

java spring dependency-injection

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

Java接口方法:每个类应该实现一个接口吗?

我一直在用Java编写大学的几门课程,我有以下问题:

从方法论上接受每个类应该实现一个接口吗?不这样做被认为是不好的做法吗?你能描述一下使用接口不是一个好主意的情况吗?

编辑:就个人而言,我喜欢将Interfaces作为一种方法和习惯使用的概念,即使它并不明显有益.Eclipse自动创建了一个包含所有方法的类文件,因此它不会浪费任何时间.

java interface

19
推荐指数
5
解决办法
1万
查看次数

Spring应用程序有Cglib2AopProxy警告

在开始我的应用程序时,我会收到大量警告o.s.aop.framework.Cglib2AopProxy 'Unable to proxy method [public final void org.springframework.jdbc.core.support.JdbcDaoSupport.setDataSource(javax.sql.DataSource)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.',大约有十几个功能.

现在我完全理解基于代理的方面不能应用于最终方法.但是,我没有(至少是故意的)尝试编织任何方面JdbcDaoSupport.我怀疑它来自<tx:annotation-driven />.我能做些什么来消除这些警告,或者更好的是,将这些类别排除在编织方面?

spring spring-aop spring-transactions

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

我想用NO接口定义一个Spring Bean CLASS

我有一个延伸的春豆HibernateDaoSupport.我希望将这个bean注入到我的控制器中,但我不希望它实现任何接口.我只是想从我的其余代码中引用具体的类(不是可以使用AopProxy?)有没有人有办法做到这一点?

<bean id="mySampleService" class="com.sample.MySampleService">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

@Autowired
private MySampleService mySampleService;

... getters and setters ....
Run Code Online (Sandbox Code Playgroud)

我知道使用界面是一个好主意,这是IoC的重点,但请不要建议我使用界面.

java spring ioc-container

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

有什么理由使用接口(Java EE或Spring和JPA)

大多数ј2ее(spring和JPA)类都设计有接口.除了继承任何技术原因有?像dynaimc proxy或aop,我需要更多技术细节

public interface UserDAO {
   void delete();
   void update();
   void save();
   List<User> get();
}

public class UserDAOImpl implements UserDAO {
   public void delete(){}
   public void update(){}
   public void save(){}
   public List<User> get(){}
}
Run Code Online (Sandbox Code Playgroud)

spring design-patterns java-ee

5
推荐指数
3
解决办法
4821
查看次数

所有 Spring beans 都是代理的吗?

我试图从高层次上了解 Spring 代理的工作原理。为什么我应该在应用程序中使用“API Interface & Impl Bean”模式或仅使用“Bean Class”模式。我读了很多 SO 答案,但它们都非常古老,我相信大多与Java 7 和 Spring 3.x相关。我想知道 2020 年Java 11+ 与 Spring 5.x (Spring Boot 2.x)仍然相关。有什么可以遵循的“最佳实践”吗?

另外,随着 的可用性@FunctionalInterface,如果我有实现像ConsumerFunction和类似接口的 bean,那么用where代替是否Predicate有意义。这只是一个例子,我也可能使用我自己的功能接口(带或不带泛型)。@Autowire/@Inject Consumer<A>FooFoo implements Consumer<A>

考虑到上述所有内容,我还想知道 Spring 创建的每个 bean 是否都被代理,或者如果实际上不需要的话,spring 创建 bean 时是否不代理它们。对于前。如果一个类只是简单地注释并@Component直接注入,没有其他注释或代理需求,spring还会为这个bean创建代理吗?

我已经看过的一些问题:

2020 年 5 月 7 日更新:

在阅读了更多文章、评论和答案后,我想谈谈我想到的确切问题/疑问。让我们考虑以下示例。我有一个课程FooAnotherFoo

@Component
@RequiredArgsConstructor  // From lombok
class …
Run Code Online (Sandbox Code Playgroud)

java spring spring-aop spring-boot

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