在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);
}
}

spring注解配置实例的更多相关文章

  1. 关于Spring注解配置的步骤

    今天分享一下 关于Spring注解配置的流程 1 导包:如下图所示 2 书写User和Car类  代码如下 package cn.lijun.bean; public class Car { priv ...

  2. Spring注解配置和xml配置优缺点比较

    Spring注解配置和xml配置优缺点比较 编辑 ​ 在昨天发布的文章<spring boot基于注解方式配置datasource>一文中凯哥简单的对xml配置和注解配置进行了比较.然后朋 ...

  3. 【Spring实战】Spring注解配置工作原理源码解析

    一.背景知识 在[Spring实战]Spring容器初始化完成后执行初始化数据方法一文中说要分析其实现原理,于是就从源码中寻找答案,看源码容易跑偏,因此应当有个主线,或者带着问题.目标去看,这样才能最 ...

  4. 【转】【Spring实战】Spring注解配置工作原理源码解析

    一.背景知识 在[Spring实战]Spring容器初始化完成后执行初始化数据方法一文中说要分析其实现原理,于是就从源码中寻找答案,看源码容易跑偏,因此应当有个主线,或者带着问题.目标去看,这样才能最 ...

  5. spring注解配置启动过程

    最近看起spring源码,突然想知道没有web.xml的配置,spring是怎么通过一个继承于AbstractAnnotationConfigDispatcherServletInitializer的 ...

  6. Spring MVC配置实例

    1.下载Jar文件,添加到项目 lib文件夹中. 使用eclipse新建 Web 项目.下载导入相关的 jar 和 Tomcat.我的java版本是JDK1.8 对应的 Tomcat 版本是 8.0. ...

  7. Spring注解配置Aop

    之前学习了SpringAop的基本原理.http://www.cnblogs.com/expiator/p/7977975.html 现在尝试使用注解来配置SpringAop. Aop,面向切面编程. ...

  8. 5.spring:注解配置 Bean

    在classpath中扫描组件 组键扫描:能够从classpath下自动扫描,侦测和实例化具有特定注解的组件 特定的组件包括: ->@Componment:基于注解,标识一个受Spring管理的 ...

  9. Spring 注解配置Bean

    一.使用注解配置Bean 1.注解 在类定义.方法定义.成员变量定义前使用.其简化<bean>标签,功能同<bean>标签.格式为: @注解标记名. 2.组件扫描 Spring ...

随机推荐

  1. PCA 协方差矩阵特征向量的计算

    人脸识别中矩阵的维数n>>样本个数m. 计算矩阵A的主成分,根据PCA的原理,就是计算A的协方差矩阵A'A的特征值和特征向量,但是A'A有可能比较大,所以根据A'A的大小,可以计算AA'或 ...

  2. nodeJS(express4.x)+vue(vue-cli)构建前后端分离详细教程(带跨域)

    好想再回到大学宿舍,当时床虽小,房随小,但是心确是满的 ----致  西安工程大学a-114舍友们 转载请注明出处:水车:http://www.cnblogs.com/xuange306/p/6185 ...

  3. 3ds max录制自定义视频

    要将视频设置成未压缩才能录制出自己设定的大小,其他都是都是特定的,软件默认的一些参数.

  4. 模拟搭建Web项目的真实运行环境(六)

    今天把Redis和Mongodb的操作整理一下,方便日后自己查看,废话不多说,直接进入主题. 一.Redis 1. 引用StackExchange.Redis.dll 由于ServiceStack.R ...

  5. iscroll.js 下拉刷新和上拉加载

    html代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  6. centos6.5安装elasticsearch

    java下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmles下载地址 : ...

  7. wpf的UserControl用户控件怎么添加到Window窗体中

    转载自 http://www.cnblogs.com/shuang121/archive/2013/01/09/2853591.html 我们来新建一个用户控件UserControl1.xaml &l ...

  8. MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)

    聚合运算之group 语法: db.collection.group( { key:{key1:1,key2:1}, cond:{}, reduce: function(curr,result) { ...

  9. winform进程、线程、TreeView递归加载

    进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程所使用的类:Process 所需命名空间:System.Diagnostics; 可以通过进行来开启计算机上现有的 ...

  10. mac版Camtasia 2.10破解

    Camtasia是非常好用的一款录屏.视频编辑.制作的软件.但是这么一款优秀的软件只有30天的试用期,试用期过后便不能使用. 目前网上的破解办法几乎都属于同一种办法: http://www.orsoo ...