相关疑难解决方法(0)

究竟什么是Field Injection以及如何避免它?

我在一些帖子中读过,Spring MVCPortlets建议不要进行现场注射.因为我试图得到一个所以我问自己我是否使用现场注射,我无法回答它.据我所知场注入是,如果你注入一个Bean与一个属性@Autowired是这样的:

CartController.java:

...
@Autowired
private Cart cart;
...
Run Code Online (Sandbox Code Playgroud)

BookshopConfiguartion.java:

@Configuration
public class BookShopConfiguration {

@Bean
public Cart cart(){
    return new Cart();
}
//more configuration
Run Code Online (Sandbox Code Playgroud)

Cart.java习惯于在购物车中存储和提供有关书籍的信息.

在我的研究期间,我读到了构造函数注入:

MyComponent.java:

...
public class MyComponent{
private Cart cart;

@Autowired
public MyComponent(Cart cart){
   this.cart = cart;
}
...
Run Code Online (Sandbox Code Playgroud)

这两种注射的优点和缺点是什么?


编辑1:由于此问题被标记为此问题的重复,我检查了它.因为在问题和答案中都没有任何代码示例,我不清楚我是否正确猜测我正在使用哪种注射类型.

java portlet dependency-injection spring-mvc autowired

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

Setter DI与Spring中的Constructor DI?

弹簧有两种类型的DI:定位器DI和结构DI.

基于构造函数的DI修复了需要注入依赖项的顺序.基于Setter的DI不提供此功能.

基于Setter的DI帮助我们仅在需要时注入依赖项,而不是在构造时需要它.

我没有看到任何其他显着差异,因为两种类型的Spring DI都提供相同的功能 - 设置器和构造函数DI在代码启动时注入依赖关系.当然,构造函数DI将通过构造函数执行,而setter DI将在构造对象后立即通过setter执行它,但它在性能等方面对开发人员没有任何影响.两者都提供了指定顺序的方法依赖注入也是如此.

我正在寻找一个场景,其中一个提供明显优势,或一个类型完全无法使用.

spring dependency-injection

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

Spring没有autowire注释注入

我找到了一些答案:https://stackoverflow.com/a/21218921/2754014关于依赖注入.没有任何注释@Autowired,@Inject或,或@Resource.让我们假设这个示例TwoInjectionStylesbean 没有任何XML配置(简单除外)<context:component-scan base-package="com.example" />.

在没有指定注释的情况下注入是否正确?

java spring annotations dependency-injection autowired

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

我们可以在java中将变量保持为final吗

我正在从 spring 属性文件中读取一个文件路径,如下所示,并映射到一个 java 类中

#file path
file.path =/root/ms_data/file/
Run Code Online (Sandbox Code Playgroud)

它被映射到这样的java类中

@Value("${file.path}")
    private String fileDataPath;
Run Code Online (Sandbox Code Playgroud)

请告知我是否可以将其保留为最终我的意思是如下所示,其中我将 fileDataPath 保留为最后一个

@Value("${file.path}")
private final String fileDataPath;
Run Code Online (Sandbox Code Playgroud)

java spring

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