注解:
添加注解时,需要添加context的相关
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 8 http://www.springframework.org/schema/context 9 http://www.springframework.org/schema/context/spring-context.xsd ">
必须添加这个注解扫描
<!-- 注解扫描 -->
<context:component-scan base-package="com.bdqn.*">
</context:component-scan>
如果xml中去掉setter注入和构造方法注入时,那么就会去找注解注入(注解注入的是调用无参构造方法)
如果xml中设置setter注入时,那么久会去调用setter的方法
如果xml中设置构造方法注入时,那么就会调用有参的构造方法
如果@Autowired写在private上面的话
@Autowired private UserDao dao;
那么这样会先执行无参构造方法后,再执行setter方法
注意:如果要调用setter方法,就最好写在setter方法的上面
华丽的分隔符---------------------------------------------------------------------------------------------------------------------------------------------
1 /** 2 * 用户DAO实现类,实现UserDao接口,负责User类的持久化操作 3 */ 4 @Repository("userDaoImpl") 5 public class UserDaoImpl implements UserDao { 6 7 public void save(User user) { 8 // 这里并未实现完整的数据库操作,仅为说明问题 9 System.out.println("保存用户信息到数据库"); 10 } 11 12 }
1 /** 2 * 用户实体类 3 */ 4 @Component("user") 5 public class User{ 6 private Integer id; // 用户ID 7 private String userName; // 用户名 8 private String password; // 密码 9 private String email; // 电子邮件 10 11 // getter & setter
1 /** 2 * 用户业务类,实现对User功能的业务管理 3 */ 4 @Service("userServiceImpl") 5 public class UserServiceImpl implements UserService { 6 7 8 @Autowired 9 private UserDao userDao; 10 11 public UserDao getUserDao() { 12 return userDao; 13 } 14 15 // userDao 属性的setter访问器,会被Spring调用,实现设值注入 16 public void setUserDao(UserDao userDao) { 17 this.userDao = userDao; 18 } 19 20 public void addNewUser(User user) { 21 // 调用用户DAO的方法保存用户信息 22 userDao.save(user); 23 } 24 25 }
xml文件加个扫描就好
<!-- 扫描包中注解标注的类 -->
<context:component-scan base-package="cn.bdqn.biz" />