我想知道setter注入何时真正发生在Spring中,并为此调试了我的代码。当第一行执行时,构造函数和setter注入似乎都会发生。我想知道,如果要注入依赖关系的服务会注意到不同之处吗?据我理解它不会吗?如果没有,那么区别在哪里呢?
ApplicationContext context = new ClassPathXmlApplicationContext("spring-module.xml");
//Both setting and constructor dependencies are initialized at this point.
我正在开发一个独立的Spring 4应用程序,它使用javaFX。但是,当我尝试创建一个新的ClassPathXmlApplicationContext时,所有自动处理的字段都是空的,这导致了NPE,尽管我让Spring实例化我的类。
这是我的主修课:
public class Main extends Application {
public static void main(String[] args) {
launch();
}
public void start(Stage stage) {
ConfigurableApplicationContext contex
我有一组复杂的bean和它们之间的依赖关系。所有bean都是带@Service、@Repository或@Controller注释的,我使用@PostConstruct注释。有一些循环依赖项,但是系统仍然被Spring正确地初始化了。
然后,我向其中一个服务添加了一个简单的Controller,它只有一个依赖项。理论上,系统应该能够引导,因为理论上它可以像以前一样先设置系统,然后再设置新的控制器。但是Spring抱怨说它不能设置上下文:
Error creating bean with name 'userService': Requested bean is currentl
它可能不是放置这个查询的确切类别,但我找不到比这个更好的类别。我请求管理员处理此问题。
我在过去的一年里一直致力于Spring框架的开发。但没有涉及到概念,只是根据项目需要使用它。现在,我需要尽可能多地探索它。请让我知道哪一个是好的-- 1. Spring In Action 2. Pro.Spring.3由Clarence Ho和Rob Haroop 3. Spring Recipes: A Problem-Solution me by Gary Mak
还有其他的书吗?
谢谢。
我有一些遗留代码,其中类是通过xml定义和初始化的Spring bean。它是具有字段成员的单例,字段成员是类依赖项。它有一个setter方法,所以我假设它是通过Spring设置的,尽管我没有找到任何定义它的xml。还有一个用于依赖项的get()方法,它有一个null检查,如果它为null,则在Spring外部手动创建它,如下所示
Class Test{
Dependency d;
setD(Dependency d){this.d=d;}
getD(){
if(this.d==null){
this.d = new Depe
我知道有一个关于这个问题的问题和很多答案。但是,即使在Spring类中,也仍然没有回答@Au牛毛为什么变成空的原因。这一定是个窃听器?
下面是一个stockNamesRepository为null和null的示例。
@Data
@Service
@Configurable // I have tried with @component as well...not working
public class StocksCrud {
@Autowired
private StockNamesRepository stockNamesRepository; // This is
根据我的理解,标签的@Lazy注释和懒惰-init属性应该具有相同的功能。但是当我开发下面的代码时,它显示了不同的行为。在下面的代码中,我期望:- (循环依赖错误)
org.springframework.beans.factory.BeanCurrentlyInCreationException
我使用@Lazy注释附加了代码,按照我的预期,它不应该允许循环依赖。
@Component
public class A {
private B b;
@Autowired
public A(@Lazy B b) {
System.out.println(