Akz*_*tch 2 autowired spring-boot
我有一个在春季启动应用程序的不同包中找到的3个类,如下所示:为什么@Autowired只在某些类中工作?我做错了什么?
@Configuration
public class Configurations{
@Autowired
Prop prop; //works fine
@Bean
//other bean definitions
}
@Component
public class Prop{
public void method(){};
}
public class User{
@Autowired
Prop prop; //does not work, null
public void doWork(){
prop.method();
}
}
Run Code Online (Sandbox Code Playgroud)
我也试过了@PostConstruct,但结果相同
public class User{
@Autowired
Prop prop; //does not work, null
@PostConstruct
public void doWork(){
prop.method();
}
}
Run Code Online (Sandbox Code Playgroud)
@Autowired仅当Spring检测到类本身应该是Spring bean时,注释才有效.
在您的第一个示例中,您使用注释Configurations进行了@Configuration注释.User另一方面,您的类没有注释,表明它应该是一个Spring bean.
有各种注解(具有不同的含义),使被拾起你的等级达到由Spring容器,有些例子是@Service,@Component,@Controller,@Configuration,....但是,这仅适用于您的类位于Spring容器正在扫描的包中.使用Spring引导,最简单的方法是将您的User类放在主类(带有注释的类)的(子)包中@SpringBootApplication.
您还可以通过在以下方法中编写以下方法来手动创建bean Configurations:
@Bean
public User user() {
return new User();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您不必为您的User类添加注释,也不必确保它位于正在扫描的包中.
| 归档时间: |
|
| 查看次数: |
5181 次 |
| 最近记录: |