Java 如何创建spring类的自动连线bean
我可以使用显式bean工厂方法创建beanJava 如何创建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(){
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();
}
}