嗨,我对春天比较陌生。我正在使用注释。 我怀疑开始我上课了 如
public class MyClassA{
@Autowired
private MyClassB variableClassB;
// more code here
.
.
.
在我的applicationContext.xml
中<context:component-scan base-package="package containing MyClassB" />
我的问题是我需要在applicationContext.xml中添加bean声明,如下所示
<bean id="classB" class="com.MyClassB"
或是否足以拥有@Autowired注释
答案 0 :(得分:7)
不,不是。
如果您的MyClassB
注释了@Component
,@Service
,@Repository
或@Controller
等注释,则组件扫描将为该类创建一个bean豆制品厂。
如果您之前没有使用任何这些注释,则需要手动创建bean
例如:
@Component
public class MyClassB{
}
答案 1 :(得分:1)
如果@Component
上有注释MyClassB
,则无需在applicationContext.xml中添加<bean id="classB" class="com.MyClassB"
。否则,需要。
答案 2 :(得分:1)
@Autowired
注释的全部目的只是为了避免在xml
文件中明确提到bean。做
<context:component-scan base-package="package containing MyClassB" />
检查包并搜索注释@Controller
,@Service
,@Repository
等,并自行创建bean。
答案 3 :(得分:1)
使用@Autowired
注释可以避免在MyClassB
的XML声明中明确说明MyClassA
的必要性,但这并不意味着MyClassB
bean 是自动创建的。如果您不希望在XML中出现MyClassB
,则需要执行context:component-scan
来查找@Bean
(和派生)注释。 (扫描费用相当昂贵,因此您需要明确要求。)