Spring自动装配与扫描注解
1 javabean的自动装配
自动注入,减少xml文件的配置信息。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 到入xml文件的约束 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<!-- 1 实例化Dao对象 id:完成对象的引用 class:指定需要创建的对象对应的类的完全限定名 -->
<bean id="usersDao" class="org.guangsoft.dao.impl.UsersDaoImpl">
</bean>
<!-- 2实例化service autowire:属性的作用,完成对象依赖之间的自动装配 no(默认执行) byName:使用需要注入的属性对应的set的方法名字和spring容器中的对象的id进行匹配,如果能匹配上,进行自动注入
byType:使用需要注入的属性对应的set的方法参数类型和spring容器中的对象的类型进行匹配,如果能匹配上,进行自动注入 constructor:在byName和byType之间进行选择(首先byName,如果byName不匹配再byType)
实际使用:byName -->
<bean id="usersService" class="org.guangsoft.service.impl.UsersServiceImpl"
autowire="byType">
</bean>
<!-- 3实例化Action对象 -->
<bean id="usersAction" class="org.guangsoft.action.UsersAction"
autowire="byType">
</bean>
</beans>
2 spring的扫描注解
使用spring的扫描注解,重构三层结构。配置更少的内容
在applicationContext.xml文件中,导入扫描的xsd
l 开启注解扫描
<?xml version="1.0" encoding="UTF-8"?>
<!-- 到入xml文件的约束 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" [ A1 ]
xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
">
<!-- 开启注解扫描 base-package属性:指定需要扫描的包,多个包之间使用,号隔开 a.b.c a.b.d a.b.e -->
<context:component-scan
base-package="org.guangsoft.dao.impl,
org.guangsoft.service.impl,org.guangsoft.action"></context:component-scan>
</beans>
注解进行总结
类注解:
@controller(给web层的注解)
@service(给serivce层加的注解)
@repository(给dao层加的注解)
@component(给java类加注解,老版本spring只有这一个注解)
以上三个注解:将对应的类纳入spring容器中对应的
Id:类名第一个字母小写(默认)
如果需要自己指定id需要给三个注解加入String类的参数
@controller(“uAction”) id=uAction
@resouce(给需要依赖的对象属性加的注解)
通过自动装配完成需要依赖属性的注入。
参数:name:按照byName进行自动装配
参数:type:按照byType进行自动装配
注解执行过程
1,加载spring的容器
2, 扫描spring容器中指定包
3, 扫描指定的包中,加了三个类注解的类,然后将该类纳入spring容器
4, <bean id=”” class=””>
5, 扫描类中被加入@resource注解的属性,然后按照自动装配的方式进行关系建立
6, Autowrie
Spring自动装配与扫描注解的更多相关文章
- Spring自动装配----注解装配----Spring自带的@Autowired注解
Spring自动装配----注解装配----Spring自带的@Autowired注解 父类 package cn.ychx; public interface Person { public voi ...
- spring自动装配
spring提供了自动装配(autowiring)和自动检测(autodiscovery)用来减少XML的配置数量. 自动装配bean属性 byName——把与Bean的属性具有相同名字(或ID)的其 ...
- Spring系列七:Spring 自动装配
相思相见知何日?此时此夜难为情. 概述 在Spring框架中,在配置文件中声明bean的依赖关系是一个很好的做法,因为Spring容器能够自动装配协作bean之间的关系.这称为spring自动装配. ...
- Spring自动装配歧义性笔记
Spring自动装配歧义性笔记 如果系统中存在两个都实现了同一接口的类,Spring在进行@Autowired自动装配的时候,会选择哪一个?如下: // 一下两个类均被标记为bean @Compone ...
- Spring 自动装配 Bean
Spring3系列8- Spring 自动装配 Bean 1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiri ...
- spring 自动装配 default-autowire="byName/byType"
<PRE class=html name="code">spring 自动装配 default-autowire="byName/byType" ...
- Spring自动装配Bean详解
1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiring ‘byType 4. Auto-Wirin ...
- Spring自动装配(二)
为什么Spring要支持Autowire(自动装配) 先写几个类,首先定义一个Animal接口表示动物: 1 public interface Animal { 2 3 public void eat ...
- Spring 自动装配及其注解
一.属性自动装配 首先,准备三个类,分别是User,Cat,Dog.其中User属性拥有Cat和Dog对象. package com.hdu.autowire; public class User { ...
随机推荐
- dedecms数据库表前缀不一样怎么还原数据
我们在用dedecms建站时,安装一般都“下一步”直接往下点,这样默认的表前缀是dede_,如果我们要还原从其他地方拷贝过来的数据,一定要注意表头是否一致.如果表头不一样怎么办呢?有两种方法,第一种, ...
- C#遍历文件夹及文件
背景: 想自己实现一个网盘系统,于是需要用到遍历文件(夹)操作. C#基本知识梳理: 1.如何获取指定目录包含的文件和子目录 (1). DirectoryInfo.GetFiles():获取目录中(不 ...
- CSS3必须要知道的10个顶级命令
1.边框圆角(Border Radiuas) 这个是我们在平常很常用的吧,以前我在用div圆角的时候,特别特别的痛苦,不管是用CSS来画圆角,还是用图片来画圆角都不那么容易,但是现在好了,在CSS3中 ...
- 绝不要进行两层间接非const指针赋值给const指针
#include <stdio.h> #include <stdlib.h> int main(void) { int *p1; int * *pp1; const int * ...
- 淘宝(阿里百川)手机客户端开发日记第十三篇 mysql的连接
首先,我建立了一个包,里面存放了三个类文件,这三个文件是我从网络中找的,经过自己的整理.(我刚才查找想把这三个文件传上去,可能是自己对cnblogs的博客不太熟悉吧,没有找到,我只好粘贴代码了) 三个 ...
- Codeforces Round #288 (Div. 2) E. Arthur and Brackets
题目链接:http://codeforces.com/contest/508/problem/E 输入一个n,表示有这么多对括号,然后有n行,每行输入一个区间,第i行的区间表示从前往后第i对括号的左括 ...
- 微博地址url(id)与mid的相互转换 Java版
原理: 新浪微博的URL都是如:http://weibo.com/2480531040/z8ElgBLeQ这样三部分. 第一部分(绿色部分)为新浪微博的域名,第二部分(红色部分)为博主Uid,第三部分 ...
- 1.6---旋转二维数组,旋转图像像素,旋转矩阵,90度(CC150)
import java.util.*; public class Transform { public int[][] transformImage(int[][] matrix, int n) { ...
- jQuery调用后台方法
前台: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.as ...
- Bootstrap 3学习笔记 -栅格
这是Bootstrap中非常基础一张表,但其实有这么容易掌握和理解吗? (1).对于col-md的div, 默认是垂直排列, 当视口(屏幕或浏览器的宽度)>992px,col-md-1的div块 ...