使用注解实现IOC的配置

使用注解定义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

猜你喜欢

转载自blog.csdn.net/qq_41172416/article/details/82111394