在spring中使用注解配置前需要先在配置文件指定需要扫描的包。通过注解的方式依赖注入,可以不用创建set方法,也不用在xml文件中申明注入关系。实例结构如下:整个流程是:先创建好数据库的表对应的持久类“User”。再定义好数据层和业务逻辑层的接口。在测试类中,获取bean容器中具体的业务逻辑实现类实例(UserServiceImpl),往里面传一个user参数,之后UserServiceImpl对象将参数经过处理再传给数据层实现类(UserDaoImpl),这个UserDaoImpl是框架注入到UserServiceImpl中的。beans.xml:<?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:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!--开启注解功能,指定可扫描的包--><context:component-scan base-package="com.springdemo" /><context:component-scan base-package="java" /><!--注册一个UserDaoImpl对象,实例名为“u”--><bean id="userDao" class="com.springdemo.dao.impl.UserDaoImpl"/><!--注册一个UserServiceImpl对象,实例名为“userService”--><bean id="userService" class="com.springdemo.service.impl.UserServiceImpl"/></beans> User.java:/** * Created by CLY on 2016/12/26. *///持久化类,这个类对应的是数据库里的user表,该表有name和age这两个字段。public class User {private String name;private int age;public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public int getAge() {return age;}public String getName() {return name;}} UserDao.java:import com.springdemo.entity.User;/** * Created by CLY on 2016/12/26. */public interface UserDao {//创建了个demo接口方法,供实体类实现。这个方法本来的作用是:“获取user对象,将用户信息存入数据库”public void save(User user);} UserDaoImpl.java:import com.springdemo.dao.UserDao;import com.springdemo.entity.User;/** * Created by CLY on 2016/12/26. */public class UserDaoImpl implements UserDao {//实现UerDao接口的save方法public void save(User user) {//本来是要将作为参数传入的“user持久化类”的对象存入数据库的,但此处主要是突显依赖注入,所以就忽略具体的操作了。System.out.print("用户名:"+user.getName()+" 年龄:"+user.getAge());}} UserService.java:import com.springdemo.entity.User;/** * Created by CLY on 2016/12/26. */public interface UserService {//mvc框架中的“控制器”会将User对象传给service层的这个方法。(因为是测试,就忽略控制器了)// 该方法负责对user对象进行一些业务逻辑的处理,之后传给dao层。public void add(User user);} UserServiceImpl.java:import com.springdemo.dao.UserDao;import com.springdemo.entity.User;import com.springdemo.service.UserService;import javax.annotation.Resource;/** * Created by CLY on 2016/12/26. */public class UserServiceImpl implements UserService{@Resource(name = "userDao")//使用注解配置,将id为“userDao”的bean注入到“userDaoImpl”里面private UserDao userDaoImpl;//定义dao层的“接口”public void add(User user) {/** 将控制器传过来的user对象传给dao层。* 此处体现的是面向接口编程。好处就是:当该接口的具体实现类改变时,并不需要修改此service中的代码,因为service操作的是接口的方法*/userDaoImpl.save(user);}} Test.java:import com.springdemo.entity.User;import com.springdemo.service.impl.UserServiceImpl;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Created by CLY on 2016/12/26. */public class Test {//测试UserServiceTest的add方法public static void main(String args[]){//创建spring容器,将beans的配置文件装载进容器。ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");//通过容器的getBean()方法,获取具体的bean实例(参数是bean的id名)。UserServiceImpl service = (UserServiceImpl)ctx.getBean("userService");User u =new User();u.setName("小明");u.setAge(18);service.add(u);}}本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139640.htm