在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/context "> <!--开启注解功能,指定可扫描的包--> <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: