我有一个Java bean:
public class User{
private Integer userid;
private String username;
private String password;
private boolean enable;
//getter and setter
}
我可以通过:
在context.xml中将它初始化为spring bean <context:component-scan base-package="com.myCompany.myProject" />
但我不想在xml中初始化它。如何使用sring 3注释对其进行初始化。我尝试了以下内容:
@Component
public class User{
private Integer userid;
private String username;
private String password;
private boolean enable;
//getter and setter
}
但上述内容对我不起作用。有什么想法吗?
答案 0 :(得分:0)
我认为这是因为您在包com.myCompany.myProject
上启用了组件扫描,而不是在包com.myCompany.myProject.db
上启用
将扫描定义更改为:<context:component-scan base-package="com.myCompany.myProject.db" />
(或添加新的扫描定义,如果您还需要来自其他包的类),您可以从XML中删除bean定义并让您的注释适合您。
愚蠢但仍然确保@Component
注释是Spring的注释。我有时遇到这个愚蠢的问题,即定义一个实际上不是来自所需库的注释(由于注释的名称相同,我的类路径中的不同库)。
答案 1 :(得分:0)
您需要添加
<context:annotation-config />
使用此XML,我的自动装配工作完美无缺:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="com.vanilla.example"></context:component-scan>
</beans>
答案 2 :(得分:0)
你不需要同时宣布这两个。
使用上下文:annotation-config允许通过注释等自动装配bean
使用上下文:component-scan提供上下文的所有内容:annotation-config,但允许自动发现bean。您在上下文中提供的包:component-scan将扫描该包以及所有子包。
希望这有帮助
答案 3 :(得分:0)
确保“User”类是该包的包或子包 “com.myCompany.myProject”。
您不需要包含<context: annotation-config/>
,它是
包含在组件扫描中。
默认情况下,bean可以使用名称“user”,除非您 使用@Component(“myBeanName”)
完成后,您可以通过以下方式将bean自动装入另一个:
@Autowired
User user;
OR
@Inject
User user;
注意:
@Inject是一个javax.inject注释,不需要注入
@Autowired是一个Spring注释,需要注入
@Autowired可以通过以下方式之一使用:
答案 4 :(得分:0)
我已经以这种方式配置了xml文件,这将帮助您解决问题。 对于Context-componentscan使用
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.java.Controllers"></context:component-scan>
<context:component-scan base-package="com.java.dao"></context:component-scan>
<context:component-scan base-package="com.java.bean"></context:component-scan>
否则您可以使用
<context:component-scan base-package="com.java.*"></context:component-scan>
下一步供注释驱动使用
<mvc:annotation-driven />
对于资源,请使用
<mvc:resources location="/" mapping="/**"/>