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 { ...
随机推荐
- jquery隐藏按钮
$(function () { jhbs = getQueryStringByName('jhbs'); shhbs = getQueryStringByName('shhbs'); if (shhb ...
- 【PHP面向对象(OOP)编程入门教程】22.把对象串行化serialize()方法,__sleep()方法,__wakeup()方法
有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化), 就像我们现在想把一辆汽车通过轮船运到美国去,因为 ...
- MS Project 使用之创建项目信息
1. 我们打开MS Project 2013,创建一个空白文档. 2. 切换“项目”选项卡,点击“项目信息”,设置项目开始时间等信息,项目一般是需要设置开始时间和使用日历的,下面我们分别进行设置 如, ...
- PYTHON seek()tell()语句
print(f.tell()) # 显示当前位置 f.seek(0) #回到某一起点
- C语言的执行
在ANSIC 的任何一种实现中,有两种不同的环境 翻译环境:将源代码转换为可执行的机器代码 执行环境:用于执行代码 这两种环境可以运行于同一个机器上,也可以运行于不同的机器上 例如交叉编译器:在一台机 ...
- 3.7---猫狗收容所(CC150)
解答的思路:建立一个queue放狗,一个queue放猫. 如下: import java.util.*; class Dog{ int time; int value; Dog(int a, int ...
- [转]mysql分布式方案-分库拆表
来源:http://kissthink.com/archive/mysql-distributed-programs---and-warehouses-split-table.html 分库& ...
- 关于jquery on方法进行事件绑定触发次数指数叠加的问题
发生环境: $modal.on('click', '#search',function(e){}); 上面代码的语法是这样的: .on( events [, selector ] [, data ], ...
- 解决Python往MySQL插入中文时报错的问题
今天遇到一个问题,用Python往MySQL插入数据时,若数据中包含中文会报类似下面的错误: ERROR 1366: Incorrect string value: '\xE4\xB8\xAD\xE5 ...
- 用ConfigParser模块读写配置文件——Python
对于功能较多.考虑用户体验的程序,配置功能是必不可少的,如何存储程序的各种配置? 1)可以用全局变量,不过全局变量具有易失性,程序崩溃或者关闭之后配置就没了,再者配置太多,将变量分配到哪里也是需要考虑 ...