Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建spring类的自动连线bean_Java_Spring - Fatal编程技术网

Java 如何创建spring类的自动连线bean

Java 如何创建spring类的自动连线bean,java,spring,Java,Spring,我可以使用显式bean工厂方法创建bean package org.package; import org.springframework.security.web.PortResolver; import org.springframework.security.web.PortResolverImpl; @Configuration public Configuration { @Bean public PortResolver portResolver(){

我可以使用显式bean工厂方法创建bean

package org.package;

import org.springframework.security.web.PortResolver;
import org.springframework.security.web.PortResolverImpl;


@Configuration
public Configuration {

    @Bean
        public PortResolver portResolver(){
            return new PortResolverImpl();
        }

}

我的目标是避免工厂方法。

如果你不想要工厂方法,让Spring通过用
@Component
注释你的类来为你实例化一个类的实例,并使你的
@Configuration
@ComponentScan
成为它的包

package org.package;

import org.springframework.security.web.PortResolver;
import org.springframework.security.web.PortResolverImpl;


@Configuration
public Configuration {

    @Bean
        public PortResolver portResolver(){
            return new PortResolverImpl();
        }

}
当Spring扫描该包时,它将找到您的类,使用其默认构造函数(或用
@Inject
@Autowired
注释的构造函数),并使用它创建类的实例。Spring然后将该实例添加到其上下文中


因为
PortResolveImpl
不在您的控制之下,您需要使用
@Bean
工厂方法。

@Component
注释
PortResolveImpl
类,并使您的
@ComponentScan
配置成为其包。@SotiriosDelimanolis您应该将其作为一个答案发布。正如您注意到的这个类来自spring库。我对@Component没有把握。您能解释一下吗?正如您所指出的,它不是来自Spring库的自定义类,也不是作为组件创建的。@user1459144没有解决方法。您将有一个
@Bean
工厂方法或一些其他进程(侦听器)将其添加到您的上下文中。没有
@组件
package org.package;

import org.springframework.security.web.PortResolver;
import org.springframework.security.web.PortResolverImpl;


@Configuration
public Configuration {

    @Bean
        public PortResolver portResolver(){
            return new PortResolverImpl();
        }

}