注入方式
这篇博客,接上一篇,来说注入方式。
两种常用的注入种方式:setter方法注入、构造方法注入。
(1)setter方法注入:
配置的时候,这么写:
<bean id = "userService" class="io.demo.service.serviceImpl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
在io.demo.service.serviceImpl.UserServiceImpl中,一定要有userDao的定义和setter方法:
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
别问我get方法要不要!成对的东西,不要强行让他们分开。
(2)构造方法注入
在bean定义中改一下:
<bean id = "userService" class="io.demo.service.serviceImpl.UserServiceImpl">
<constructor-arg>
<ref bean="userDao"/>
</constructor-arg>
</bean>
再加上构造方法:
private UserDao userDao;
public UserServiceImpl(UserDao userDao) {
super();
this.userDao = userDao;
}
可以用稀奇古怪的字符定义bean但是最好还是别那么做。
总结一下:
(a) @Autowired 是自动装配,它是使用一种隐式的bean发现机制。
按照名称来查找对应的bean,在程序中,以userService为例:
定义了bean;使用自动装配时:
不建议用稀奇古怪的多个类似bean,或者用byType装配,这只会让代码更加难以维护。使用自动装配时,尽量保持bean id=”userService” 和UserService userService这种定义形式,目的是方便维护代码。
(b) 在xml中配置bean:这个的话,是这种:
<bean id = "userService" class="io.demo.service.serviceImpl.UserServiceImpl">
</bean>
© 在java中配置bean使用@Component,然后要使用@ComponentScan,使用注解的方式配置bean,这个先有个概念,后面会细说。
代码我附在这里:本文示例资源: newdemo-3.zip.
先看一下代码,做到心中有数。
代码使用的是springMvc,下一节讲springmvc的简单使用。