本人最近因为项目需要使用Spring的注解功能,就在网上找了些资料看看,觉得Spring的注解没那么高深,也很简单的,下面把本人学习的成果整理了一下,供有需要的朋友参考一下。因为初次使用,可能有些地方写得不对,请高手谅解并指正一下哦。
1、环境框架:webwork2+spring2.5+hibernate3.3(webwork2可以换成struts2哦)
2、需引入common-annotations.jar包(因为 @Resource注解需要用到此包)
3、webwork2中的action需要使用spring来注入的话,需要在webwork.properties文件中配置webwork.objectFactory=spring(而且不光是Action的注入,涉及Action类中的业务类的注入也需要配置此项,否则报错)
4、spring的基本配置此外省略,只讲注解的配置
5、要使用注解功能,需要在spring的配置文件中加入context命令空间和schema的位置:(在beans中配置)
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config/>
........
</beans>
并配置<context:annotation-config/>来简化配置,该配置默认注册了AutowiredAnnotationBeanPostProcessor, CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor 以及equiredAnnotationBeanPostProcessor
这四个BeanPostProcessor。(如果不这样配置,则将分别配置各种注解的Bean)
6、通过以上配置,就可以使用 @Autowired, @Qualifier, @Resource, @PostConstruct, @PreDestroy等注解了。
@Autowired 按类型自动装配
@Qualifier 只能和 @Autowired结合使用。作用是:在Autowired进行装配时,同时有两个(或以上的)同一类型的Bean配置时,使用 @Qualifier("bean的id")指定注入的名称,使 @Autowired从按类型注入转为按名称注入
@Resource 默认按名称进行装配,如果装配不了,则按类型装配(推荐使用 @Resource来替代 @Autowired)
@PostConstruct 配置在方法上(只能配置在方法上),表示在创建Bean之后将执行的方法
@PreDestroy 配置在方法上(只能配置在方法上),表示在销毁Bean之前将执行的方法
7、以上注解的使用,我们都需要在spring配置文件中配置相应的bean,完成byType和byName的注入。要将bean从配置文件完全移除,可以使用 @Component注释来实现零配置
8、spring2.5在 @Repository的基础上增加了 @Component, @Service, @Controller三个注解,都是标类的(把类配置为bean),分别用于不同的层次:
@Component 泛化的概念,表示一个组件(Bean),可作用在任何层次(也即如果不能确定层次时使用)
@Service 作用于业务层的类
@Controller 作用于控制层的类
@Repository 作用于数据访问层的类
通过在类上使用 @Repository、 @Component、 @Service 和 @Constroller 注解,Spring 会自动创建相应的 BeanDefinition 对象,并注册到 ApplicationContext 中。这些类就成了 Spring 受管组件。
9、使用 @Component注解后,spring容器必须使用类扫描机制以启用注释驱动Bean定义和注释驱动Bean的自动注入策略。则必须在spring的配置文件中添加如下配置:
<context:component-scan base-package="com.free"/> (将会扫描com.free及其子包中的所有类)
10、对类进行扫描时,可以配置扫描指定的包和排除的包。有正则表达式、AspectJ、类和注释等的过滤类型如:
<context:component-scan base-package="com.free">
<context:include-filter type="regex"
expression="com\.free\.service\..*"/>
<context:exclude-filter type="aspectj"
expression="com.free.util..*"/>
</context:component-scan>
11、有以下情况也不能完全摒除XML的配置方式:
a、Bean不是自己编写的,如JdbcTemplate或SessionFactory等,必须使用XML进行配置
b、注释往往是类级别的,而XML则更加灵活。比如相比于 @Transaction 事务注释,使用 aop/tx 命名空间的事务配置更加灵活和简单。
c、如果 Bean 的依赖关系是固定的,(如 Service 使用了哪几个 DAO 类),这种配置信息不会在部署时发生调整,那么注释配置优于 XML 配置;反之如果这种依赖关系会在部署时发生调整,XML 配置显然又优于注释配置,因为注释是对 Java 源代码的调整,您需要重新改写源代码并重新编译才可以实施调整。
分享到:
相关推荐
Spring入门学习笔记,内容包括Spring介绍,Spring配置文件,Spring配置数据源,Spring的注解开发,Spring集成Junit,Spring的AOP,jdbcTemplate介绍,Spring控制事务流程,Spring集成web。
第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 ...
springboot的入门技术,详细的介绍了相关的技术信息,从spring的注解开发到最终的springboot整合mybatis,redis集群的组合都有详细的介绍
SpringAOP学习笔记以及四个可运行的Demo,涵盖经典代理模式、基于注解、基于xml配置这3方面的Demo
第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 ...
内容概要:学习Spring的一些学习笔记,主要学习Spring 框架两大核心机制(IoC、AOP) 笔记大纲:阅读笔记可以学习了解一下内容 如何使用 IoC ;配置文件;IoC 底层原理;通过运行时类获取 bean;通过有参构造创建 ...
SpringCloud学习笔记1. maven父子项目父工程配置新项目,maven,父工程名称字符编码,设置,编辑器文件编码注解功效激活java编译选择1.8 文件类型文件过滤删除掉父工程下的src,只保留一个pom.xml父工程的pom.xml...
Spring学习笔记Spring spring的配置 IOC 依赖注入 基于Xml的注入 基于注释的注入 Spring的自动注入和属性自动注入 AOP 静态代理 动态代理 使用spring实现AOP 基于Annotation实现AOP 基于XML实现AOP ...
狂神说Java——Spring学习笔记 内容概要: 1、了解什么是Spring 2、IOC 3、Spring配置 4、依赖注入 5、Bean的自动装配 6、注解开发 7、代理模式 8、AOP 能学到什么:详细了解Spring基础以及使用 阅读建议: 建议配合...
Spring2.5注解(标注)学习笔记: 一句话:对开发人员来说:最常用的Spring2.5最常用的注解就4个: @Resource @Qualifier @Service @Repository
基于注解的spring_3.0.x_MVC学习笔记
声明式事务控制Spring提供对事务的控制管注解方式事务属性事务传播为如果当前方法有事务,当前方法事务会挂起,在为加入的方法开启一个新的事务,直到新的事务执完、
spring+springMVC+WebSocket 的学习笔记 ,超详细,源代码注释清晰,适合新手,赶紧下载吧,提高技术,面试升职加薪需要不断学习
NULL 博文链接:https://coolszy.iteye.com/blog/542717
NULL 博文链接:https://coolszy.iteye.com/blog/540465
简单介绍了springdata的知识,包含了springdata 的环境搭建,注解开发等,还有一系列相关的代码供参考。
spring学习笔记 人家也想要小星星,mua~
2.使用 Junit 提供的一个注解把原有的 main 方法替换了,替换成 Spring 提供的 3.告知 Spring 的运行器, Spring 和 ioc