我可以在没有任何xml配置文件的情况下使用Spring注入Java对象吗?
我想以编程方式使用Spring注入一个普通的java对象,而不使用任何xml配置。想要注入带有标签的字段/方法,如 等。这可能吗?谢谢!@EJB
@PostConstruct
我想以编程方式使用Spring注入一个普通的java对象,而不使用任何xml配置。想要注入带有标签的字段/方法,如 等。这可能吗?谢谢!@EJB
@PostConstruct
使用 AnnotationConfigApplicationContext,您根本不需要任何 XML。以编程方式创建应用程序上下文,并且
a) 手动注册带注释的类
appContext.register( MyTypeA.class,
MyTypeB.class,
MyTypeC.class );
b) 或扫描类路径以查找带注释的类
appContext.scan(
"com.mycompany.myproject.mypackagea",
"com.mycompany.myproject.mypackageb"
)
如果您使用便利构造函数之一
或
上下文是自动创建和刷新的,否则您需要在添加类或包后手动调用 refresh() 方法。
对于自动布线的现有Bean,我认为首选的成语是使用
appContext.getAutowireCapableBeanFactory().autowireBean(existingBean)
或者,如果您想要更多控制,请使用
appContext.getAutowireCapableBeanFactory()
.autowireBeanProperties(
existingBean,
autowireMode,
// e.g. AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE
dependencyCheck
)
有关进一步的参考,请参阅
是的,您可以使用 、 、 或 (根据其职责) 对任何 POJO 进行注释,然后它将成为一个春豆。你只需要把这行放到:@Component
@Service
@Controller
@Respository
applicationContext.xml
<context:component-scan base-package="org.yourbasepackage" />
您还可以使用 和 代替 xml 和 。@PostConstruct
@PreDestroy
init-method
destroy-method
更新:有一个名为spring-javaconfig的项目。它的一部分已经成为核心弹簧的一部分,你可以在这里看到更多细节。简而言之,它允许您使用java类而不是xml来配置Bean。