使用注解定义Bean
@Repository :用于标注DAO类
package dao.impl;
import org.springframework.stereotype.Repository;
import dao.UserDao;
import entity.User;
/**
* 用户DAO类,实现UserDao接口,负责User类的持久化操作
*/
//通过注解定义了一个DAo
@Repository("userDao")
public class UserDaoImpl implements UserDao {
public void save(User user) {
// 这里并未实现完整的数据库操作,仅为说明问题
System.out.println("保存用户信息到数据库");
System.out.println("用户名:"+user.getUsername()+"\t"+"密码:"+user.getPassword());
}
}
使用注解实现Bean组件装配
@Service :用于标注业务类
@Autowired :默认按照类型匹配 (即:UserDao )
@Qualifier : 指定匹配Bean的名称(即:xml中Bean标签中id的值)
注意:此处装配bean组件选择了第一种,两种即可,
package service.impl;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import service.UserService;
import dao.UserDao;
import entity.User;
/**
* 用户业务类,实现对User功能的业务管理
*/
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired //方式一
@Qualifier("userDao")
private UserDao dao;
// 无参构造
public UserServiceImpl() {}
public void addNewUser(User user) {
// 调用用户DAO的方法保存用户信息
dao.save(user);
}
/*@Autowired 方式二
public void setDao(@Qualifier("userDao") UserDao dao) {
this.dao = dao;
}*/
}
加载注解定义的Bean
注意:添加红色字体的声明,然后,创建 component-scan 标签扫描注解标注的类
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描包中注解标注的类 -->
<context:component-scan base-package="dao.impl,service.impl"/>
</beans>
创建测试类,测试以上代码
package com.bdqn;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.UserService;
import entity.TestEntity;
import entity.User;
public class test {
@Test
public void eg1() {
// 使用ApplicationContext接口的实现类ClassPathXmlApplicationContext加载Spring配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService service = (UserService) ctx.getBean("userService");
User user=new User();//此处传入一个空对象
service.addNewUser(user);
}
/**
控制台打印信息如下:
保存用户信息到数据库
用户名:null 密码:null
*/
}
使用java标准注解完成装配
@使用Resource代替 @Autowired 和 @Qualifier
注意:默认按照属性名(即此处的 dao)
package service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import service.UserService;
import dao.UserDao;
import entity.User;
/**
* 用户业务类,实现对User功能的业务管理
*/
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource(name="userDao")
private UserDao dao;
// 无参构造
public UserServiceImpl() {
}
public void addNewUser(User user) {
// 调用用户DAO的方法保存用户信息
dao.save(user);
}
public UserDao getDao() {
return dao;
}
public void setDao( UserDao dao) {
this.dao = dao;
}
}
演示代码:https://pan.baidu.com/s/15LUCV5Wof53J9LyT8Gr5qw