这篇博客,接上一篇,来说注入方式。
两种常用的注入种方式: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方法要不要!成对的东西,不要强行让他们分开。
在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的简单使用。