Spring三种方法注入属性
1. 准备工作:
1) 新建Dao包,Service包
2) 在每个包内新建对应的接口,以及impl包
UserDao
public interface UserDao {
public void TestDao();
}
UserService
public interface UserService { public String testUserService(); }
3) 在impl包添加对应的实现类
UserDaoImpl
public class UserDaoImpl implements UserDao { public void TestDao() { System.out.println("This UserDaoimpl"); } }
UserServiceImpl
public class UserServiceImpl implements UserService { private UserDao userDao; public String testUserService() { userDao.TestDao(); return null; } public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } }
2. 注入属性
1) <property>方法
直接在配置文件里添加需要的属性>
<bean id="userDaoimpl" class="com.neusoft.spring.demo.dao.impl.UserDaoImpl"/> <bean id="userServiceImpl" class="com.neusoft.spring.demo.service.impl.UserServiceImpl"> <property name="userDao" ref="userDaoimpl"/> </bean>
2) 注解方法
注解是通过@Autowired来完成自动装配工作的
a. 首先给需要注入的属性添加注解
@Autowired private UserDao userDao;;
b. 配置
配置方法有两种
a) 通过类
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
b) 通过在xis里面添加context
首先在xsi后面添加这两个命名空间
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
接着添加
<context:annotation-config/>
c. 最后添加bean
<bean id="userDao" class="com.neusoft.spring.demo.dao.impl.UserDaoImpl"/> <bean id="userServiceImpl" class="com.neusoft.spring.demo.service.impl.UserServiceImpl"/>
3) 自动扫描机制注入
a. 首先给需要注入的属性添加注解
@Autowired private UserDao userDao;
b. 给需要自动扫描的类添加注解
@Component public class UserServiceImpl implements UserService {
@Component public class UserDaoImpl implements UserDao {
@Component 不确定组件属于哪个层的时候
@Service 标注业务层组件
@Controller 标注控制层组件
@Repository 标注数据访问层组件
c. 添加context命名空间
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
d. 添加需要自动扫描的类
<context:component-scan base-package="com.neusoft.spring.demo.service.impl" /> <context:component-scan base-package="com.neusoft.spring.demo.dao.impl"/>
3. 测试
@Test public void serviceTestXml(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService =context.getBean("userServiceImpl", UserServiceImpl.class); userService.testUserService(); }
4. 结果显示