Spring笔记3

annotation(注解)(可见Spring_pref,3.11)

加入annotation,需要在beans.xml的<beans>标签加属性xmlns:context="http://www.springframework.org/schema/context",并在<beans>标签辖内加标签<context:annotation-config />。前者是新增的xml的命名空间,后者表示该xml文件的bean有参与注解的。前者属性中,冒号前表示xml命名空间,冒号后表示该xml中标签可携带的前缀。无冒号即默认的命名空间,有冒号为带有某前缀的标签对应的命名空间。

可以通过设置编辑器的XML-catalog来增加前者定义的名字字典,方便编辑时自动补全。

.xsd文件为元数据文件,是新型的.dtd文件,两者是xml的语法文件,又被称为schema。定义于xml文件的头。schema location使用域名作为.xsd文件的key,确保每个文件的key独一无二。

如果接触不到源码,就只能使用xml完成注入,而无法运用annotation。

@Autowired注解,用于setter函数上方(.Java)中。

有Annotation情况下,如果有某bean对应的实现需要注入,比如类中setter注入,<bean>下本来需要写<property>,可以通过在.java中的setter函数前加@Autowired注解,则.xml中的<bean>里不写property也可以完成动态装配。

Autowired默认自动装配为byType。如果beans.xml中有多个相同class的bean,byType的自动装配会报错,则需要在setter的参数前加@Qualifier("value"),value为qualifier value,应定义于bean中,默认可以用bean ID代替,用于指定装配哪个bean。(不常用)

@Required注解,用于setter函数上方(.java中)。

要求setter的目标对象必须被注入,否则报错。

@Resource注解,用于setter函数上方(.java中),指定所用的bean,默认byName,名称找不到就byType。(推荐使用)

@Resource(name = "u"),用于指定注入的bean名。

@Component注解,使用后可代替<bean>标签。

在某类上方使用@Component,意味着该类成为一个组件,可作为Spring容器的注入元素。使用需要在beans.xml中写<context:component-scan base-package="value"/>,value为具体存有bean的包名称(可以是整个项目的文件夹名称com.example);在具体实现类的类名上注解@Component,表示该类产生的对象可作为component(组件);在使用该component的类上方写@resource注解。标记为component的类均可以直接被getbean函数取到。

实际操作中,JVM由于component-scan,会扫描包中带有@Component注解的类,生成对象作为备选component,该对象名为标准起名法名称(如userDAOImpl,类名首字母小写)。

可以通过@Component("value")或@Component(value="value")的方法为自己起名,value为对象(组件)名称。规范开发要求指定Component的对象名,方便注入使用。

@Resource(name="value")可以用于指定用哪个对象作为resource(资源),value为对象名。

@Component,@Repository,@Service@Controller这四类注解为Spring默认组件注解。可以在component-scan中设置filter过滤扫描类型。(参pref_3.12)

@Scope("value"),用于组件注解(如@Component)的上方,指定该组件的类型。value为singleton时该组件为单例;为prototype时每次重新新建。

@PostConstruct,@PreDestroy,用于类实现(.java)中,函数上方。前者指定某函数在对象构造后运行,后者指定某函数在对象析构前运行。即xml中的init和destroy。

一般来说,有源码时直接写Annotation开发效率高;没有源码时可以改.xml文件。

时间: 2024-10-02 09:15:56

Spring笔记3的相关文章

Spring笔记(4)-----&lt;bean&gt;的基本配置

Spring容器成功需要具备的三个条件: 1)Spring框架的类包都已经放在应用程序的类路径下. 2)应用程序为Spring提供了完备的Bean配置信息. 3)Bean的类都已经放在类路径下. Spring启动时读取应用程序的Bean配置信息,在容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean的依赖关系,为上层应用提供准备就绪的运行环境. Bean的配置信息是Bean的元数据信息,有4部分: 1)Bean的实现类. 2)Bean的属性信息. 3)Bean

spring笔记(一)

这几日,在看spring框架的知识,了解了一下spring的IoC核心,AOP的概念,然后剩下的其实就是Spring对于其他的java服务的封装:ORM,web, JMS,JMX等. 坦白地说,我并没有完全理解spring的结构,首先它的API,我还不是很清楚,现在能至少做个分类.其次,spring框架和ORM之类的框架在做集成时的编程经验,我还没有. 后面的路要一分为二,继续对于spring底层的细节进行学习和了解,其次对于spring和其他组件整合的知识在实践中学习.看书估计不管用了. sp

Spring笔记(二):Ioc 之注入与装配

一.Spring依赖注入的原理 二.依赖注入的实现 (一)对象的注入 1.简单属性注入 1)源代码 package main.java.com.spring.ioc.base.dao.impl; import main.java.com.spring.ioc.base.dao.PersonDao; /** * * PersonDiDaoImpl * @title * @desc * @author SAM-SHO * @Dec 28, 2014 */ public class PersonDiD

Spring 笔记

1, 新建包或导入工程错误提示: The type javax.servlet.ServletContext cannot be resolved. It is indirectly referenced from required .class files. 解决方法:在安装的tomcat下的lib目录里面找到servlet-api.jar包,导入项目下的lib文件夹中即可. 2,Could not load the Tomcat server configuration at /Server

Spring笔记1

Spring依赖应用上下文xml文件(beans.xml或ApplicationContext.xml)进行对象定义,完成核心工作.可以在xml文件中import其他的xml文件(如数据库,<import resource="spring/dao/MySQL-datasource.xml"/>).beans为Map<String,Object>结构. AOP即面向切面编程(Aspect Oriented Programming). jdom包用于解析xml文件,

Spring笔记(一):Ioc 之 Bean的管理

前提: 1.需要 spring.dom4j.junit.commons-logging等的jar包, 配置web.xml,新增 applicationContext.xml 2.Spring主要核心是: 1)控制反转(IOC):以前传统的java开发模式中,当需要一个对象时我们,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,Spring容器使用了工厂模式为我们创建了所需要的对象,我们使用时不需要自己去创建,直接调用Spring为

spring笔记(三)

Spring 第二天: 1. 代理模式 2. Aop编程 3.Spring对Jdbc的支持 JdbcTemplate工具类 思考: 程序的"事务控制", 可以用aop实现! 即只需要写一次,运行时候动态织入到业务方法上. Spring提供了对事务的管理,开发者只需要按照Spring的方式去做就行. 目标: 1. Spring声明式事务管理 * XML配置 *注解方式 2. Spring与Hibernate整合 3.  SSH整合 1. 程序中事务控制 1.1 环境准备 用户访问->

spring笔记一

Spring最有用的地方就是IOC.虽然代码很简单,但实际上最有用. IoC是什么? Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想. 我们在Biz的文件夹下面,创建一个类SpringContext.java public class SpringContext{ private static ApplicationContext ctx;//静态变量 //get()方法 Public static ApplicationContext

Spring笔记2

IOC/DI简介: DI为依赖注入,通常来说bean是自己控制对象的实例化等工作(即依赖关系).但在Spring容器中,创建bean的同时完成了注入依赖关系的工作. IOC为控制反转,其与DI的意义类似,即本来bean自己控制实例化,现在成了创建bean时便完成了实例化等依赖工作,所以称为控制反转. ”依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数.工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性.因此,容器的工作就