`
mysecondgod
  • 浏览: 18637 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring注解(修改更详细的)

 
阅读更多
@Service用于业务层
@Controller用于控制层
@Respository用于数据访问
@Componment泛指组件
@Resource按名称 @autowired按类型 也可标注在setter() 可以省去get()set()
@Transactional 进行事务处理

1、value元素

<value/>元素通过字符串来指定属性或构造器参数的值。

<bean id="myDataSource" detroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
  <value>com.mysql.jdbc.Driver</value>
</proerpty>
<property name="url">
  <value>jdbc:mysql://localhost:3306/mydb</value>
</property>
<property name="username">
  <vlaue>root</value>
</property>
</bean>

2、idref元素

idref元素用来将容器内其它bean的id传给<constructor-arg/>或<property/>元素,同时提供错误难功能。

<bean id="theTargetBean" class="..."/>
<bean id="theClientBean" class="...">
<property name="targetName">
  <idref bean="theTargetBean" />
</property>
</bean>

等同于:

<bean id="theTargetBean" class="..." />
<bean id="theClientBean" class="...">
<property name="targetName">
  <value>theTargetBean</value>
</property>
</bean>

使用idref标记允许容器在部署时验证所被引用的bean是否存在。此外,如果被引用的bean在同一XML文件内,且bean名字就是bean id,那么可以使用local属性。
此属性允许XML解析器在解析XML文件时来对引用的bean进行验证。

<property name="targetName">
<idref local="theTargetBean" />
</property>

3、ref元素

形式一:<ref bean="someBean">
这是最常见的形式是通过使用ref标记指定bean属性的目标bean,通过该标签可以引用同一容器或父容器内的任何bean(无论是否在同一XML文件中)。
XML‘bean’元素的值即可以是指定的bean的id值也可以是其name值。

形式二:<ref local="someBean">
使用ref的local属性指定目标bean,它可以利用XML解析器来难所引用的bean是否存在同一文件中。local属性值必须是目标bean的id属性值。

形式三:<bean parent="someBean">
通过使用ref的parent属性来引用当前窗口的父容器中的bean。parent属性值即可以是目标bean的id值,也可以是name属性值。

4、内部 bean:

所 谓内部bean(inner bean)是指在一个bean的<property/>或<constructor-arg/>中使用< bean/>元素定义的bean.内部bean不需要有id或name属性,即使有也会被窗口忽略.
内部bean总是匿名的且它们总是prototype模式的.同时将内部bean注入到包含该内部bean之外的bean是不可能的.
<bean id="outer" class="...">
<property name="target">
  <bean class="com.mycoompany.Person">
   <property name="name" value="Fiona Apple"/>
   <property name="age" value="25"/>
  </bean>
</property>
</bean>

5、集合合并:

从Spring2.0开始,Spring IoC容器将支持集合的合并。父子集合元素合并后的值就是子集合中的最终结果,而且子集合中的元素值将覆盖父集合中的对应的值。
<beans>
<bean id="parent" abstract="true" class="example.ComplexObject">
<property name="adminEmails">
  <props>
   <prop key="administrator">administrator@somecompany.com</prop>
   <prop key="support">support@somecompany.com</prop>
  </props>
</property>
</bean>
<bean id="child" parent="parent">
<property name="adminEmails">
  <props merge="trur">
   <prop key="sales">sales@somecompany.com</prop>
   <prop key="support">support@somecompany.co.uk</prop>
  </props>
</property>
</bean>
</beans>

合并后内容:

administrator=administrator@somecompany.com
sales=sales@somecompany.com
support=support@somecompany.co.uk

list集合有排序功能,父bean的列表内容将排在子bean列表内容的前面;
merge属性必须在继承的子bean中定义。

6、Nulls

<null/>用于处理null值。Spring会把属性的空参数当作空字符串处理。

<bean class="ExampleBean">
<property name="email">
  <value></value>
</property>
</bean>

等同于

excapleBean.setEamil("");

而null值则可以使用<null/>元素来表示:

<bean class="ExampleBean">
<property name="email"><null/></property>
</bean>


7、简写:

针对常见的value值或bean的引用,Spring提供了简化格式用于替代<value/>和<ref/>元素。
<property/>、<constructor-arg/>、<entry/>元素都支持value属性,它可以用来替代内嵌的<value/>元素。

<property name="myProperty">                           
<value>hello</value>           =====            <property name="myProperty" value="helo" />
</property>

<constructor-arg>
<value>hello</value>           =====            <constructor-arg value="hello" />
</construtctor-arg>

<entry key="myKey">
<value>hello</value>           =====            <entry key="myKey" value="hello" />
</entry>


<property/>和<constructor-arg/>支持类似的简写属性ref,它可以替找整个内嵌的</ref>元素。

<property name="myProperty">
<ref bean="myBean">            =====            <property name="myProperty" ref="myBean" />
</property>

<constructor-arg>
<ref bean="myBean">            =====            <constructor-arg ref="myBean" />
</constructor-arg>

切记:尽管存在等同于<ref bean="xxx" >元素的简写形式,但并没有<ref local="xxx">的简写形式。

map中的entry元素的简写形式为key/key-ref和value/value-ref属性。

<entry>
<key>
  <ref bean="myKeyBean" />            =====          <entry key-ref="myKeyBean" value-ref="myValueBean" />
</key>
<ref bean="myValueBean" />
</entry>

8、组合属性名称

当设置bean的组合属性时,除了最后一下属性外,只要其他属性值不为null,组合或嵌套属性名是完全合法的。

<bean id="foo" class="foo.Bar">
<property name="fred.bob.sammy" value="123" />
</bean>

9、depends-on属性:

depends-on属性可以用于当前bean初始化之前显式的强制一个或多个bean被初始化。

<bean id="beanOne" class="ExampleBean" depends-on="manager">
<property name="manager" ref="manager" />
</bean>
<bean id="manager" class="ManagerBean" />

若需要表达对多个bean的依赖,可民认在<depends-on />中将指定的多个bean名字用分隔符进行分隔,分隔符可以是逗号、空格及分号等。

<bean id="beanOne" class="ExampleBean" depends-on="manager,accountDao">
<property name="manager" ref="manager" />
</bean>
<bean id="manager" class="ManagerBean" />
<bean id="accountDao" class="x.y.jdbc.JdbcAccountDao" />

10、延迟初始化bean--lazy-init 属性:

<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true">
<!-- various properties here... -->
</bean>
<bean name="noo.lazy" class="com.foo.AnotherBean">
<!-- various properties here... -->
</bean>

如 果一个bean被设置为延迟初始化,而另一个非延迟初始化的singleton bean依赖于它,那么当ApplicationContext提前实例化singleton bean时,它必须也确保所有上述singleton依赖bean也被预先初始化,当然也包括设置为延迟实例化的bean.

在容器层次中通过在<beans />元素上使用‘default-lazy-init’属性来控制延迟初始化也是可能的。
<beans default-lazy-init="true">
<!-- no beans will be eagerly pre-instantiated... -->
</beans>

11、autowire<自动装配> 属性:

模式     说明

no      不使用自动装配,必须通过ref元素指定依赖,这是默认设置。

byName     根据属性名自动装配。Spring将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。

byType     如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个,则抛出异常。

constructor    与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中未找到与构造器参数类型一致的bean,那么将抛出异常。

autodetect    通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。


--通过设置<bean />元素的autowire-candidate="false",可以针对单个bean设置其是否为被自动装配对象。

12、dependency-check <依赖检查> 属性:

此属性用于检查bean定义中实际属性值的设置。

模式     说明

none     没有依赖检查,如果bean的属性没有值的话可以不用设置。

simple     对于原始类型及集合(除协作者外的一切东西)执行依赖检查。

object     仅对协作者执行依赖检查员。

all      对协作者,原始类型及集合执行依赖检查。





3.2.2. 实例化容器

Spring IoC容器的实例化非常简单,如下面的例子:

Resource resource = new FileSystemResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
... 或...

ClassPathResource resource = new ClassPathResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
... 或...

ApplicationContext context = new ClassPathXmlApplicationContext(
        new String[] {"applicationContext.xml", "applicationContext-part2.xml"});
// of course, an ApplicationContext is just a BeanFactory
BeanFactory factory = (BeanFactory) context;




Table 3.1. bean定义






名称

链接




class


Section 3.2.3.2, “实例化bean”



name


Section 3.2.3.1, “命名bean”



scope


Section 3.4, “bean的作用域”



constructor arguments


Section 3.3.1, “注入依赖”



properties


Section 3.3.1, “注入依赖”



autowiring mode


Section 3.3.6, “自动装配(autowire)协作者”



dependency checking mode


Section 3.3.7, “依赖检查”



lazy-initialization mode


Section 3.3.5, “延迟初始化bean”



initialization method


Section 3.5.1, “Lifecycle接口”



destruction method


Section 3.5.1, “Lifecycle接口”

分享到:
评论

相关推荐

    hibernate+spring注解例子

    这个"hibernate+spring注解例子"项目提供了一个实际的登录场景,帮助学习者更好地理解和运用这两个框架的注解特性。通过深入学习和实践,开发者能够提高开发效率,降低出错概率,为构建高效、稳定的Java应用程序打下...

    spring注解方式解析

    在Spring框架中,注解方式的使用极大地简化了配置,提高了开发效率。本文将深入解析Spring中的注解式编程,主要包括IOC...通过理解和熟练运用这些注解,开发者可以更高效地构建松耦合、易于测试和扩展的Java应用程序。

    使用Spring的注解方式实现AOP的细节

    以上就是Spring注解方式实现AOP的一些核心细节。通过这种方式,我们可以方便地在不修改原有代码的情况下,为服务添加额外的功能,实现代码的解耦和复用。不过,需要注意的是,过度使用AOP可能会导致代码可读性和可...

    Spring注解驱动开发.pdf

    ### Spring注解驱动开发知识点详解 #### 一、Spring注解驱动概述 Spring框架通过引入注解支持,极大地简化了Java EE应用的开发工作。它不仅提供了基础的依赖注入功能,还增强了对组件扫描的支持,使得开发者能够...

    spring注解详细介绍

    ### Spring注解详解 #### 一、Spring框架与注解技术背景 Spring 是一款轻量级的开源框架,主要用于简化企业级应用的开发工作。它提供了丰富的功能支持,包括依赖注入(Dependency Injection, DI)、面向切面编程...

    我的博客spring注解概述的示例代码

    在这个"我的博客spring注解概述的示例代码"资源中,我们可能找到如何使用`@Autowired`来自动装配bean的实例。 首先,让我们了解什么是依赖注入。在面向对象编程中,一个类往往依赖于其他类来完成特定任务。依赖注入...

    SPring注解及页面跳转实例

    ### Spring MVC 注解及页面跳转实例解析 ...通过以上步骤,我们不仅能够理解Spring MVC的基本工作原理,还能学会如何更灵活地管理和配置Spring MVC应用程序。这对于实际项目开发来说是非常重要的。

    spring简单注解+log4j记录日志

    在IT行业中,Spring框架是Java开发中的...通过学习这些内容,初学者可以更好地理解和实践Spring框架,同时提高代码的可维护性和调试效率。在实际项目中,结合使用Spring和Log4j可以大大提高开发效率和问题排查能力。

    spring注解

    接下来,我们将详细介绍Spring注解的基本概念、使用方法以及相关的原理分析。 #### 二、Spring注解基本概念 在Spring框架中,主要涉及的注解包括但不限于: 1. **@Component**:标记类作为组件,是Spring管理的一...

    spring3.x注解

    下面对 Spring 3.x 的注解应用进行详细的介绍。 一、属性装配 在 Spring 3.x 中,提供了两种用于属性装配的注解:@Autowired 和 @Resource。 1. @Autowired @Autowired 注解用于自动装配依赖项,默认按照类型...

    spring注解aop demo

    Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...

    Spring注解配置中间层供Struts2使用

    首先,让我们深入理解Spring注解配置。Spring框架提供了一系列注解,如`@Component`、`@Service`、`@Repository`和`@Controller`,这些注解用于标记Java类作为Spring Bean。`@Component`是基础注解,其他三个注解(`...

    spring Configurable注解用法

    在Spring框架中,`@Configurable`注解是Spring AOP(面向切面编程)的一部分,主要用于实现依赖注入(DI)到非Spring管理的对象中,比如由其他框架创建或者通过new关键字实例化的对象。这个特性使得即使在这些“不...

    spring mvc+ibatis+spring注解

    总之,这个项目展示了如何结合Spring MVC、Ibatis以及Spring注解,构建一个完整的Web应用程序,实现了数据的CRUD操作,以及分页排序查询和用户登录验证等功能,所有这些都基于非XML的配置方式,利用注解提高了开发...

    Spring 注解学习手札(四) 持久层浅析

    在本篇《Spring注解学习手札(四)持久层浅析》中,我们将深入探讨Spring框架在持久层的应用,特别是如何通过注解简化数据库操作。Spring作为一个强大的轻量级框架,提供了丰富的功能来处理数据访问,使得开发者可以...

    2-Spring注解1

    【Spring注解1】知识点详解 1. **Spring注解介绍** Spring框架自3.0版本开始,引入了注解配置,逐渐成为主流的配置方式,减轻了XML配置的负担,使得代码更加简洁、易读。注解是元数据的一种形式,它允许在源代码...

    spring AOP注解的应用1

    本篇主要探讨的是如何利用Spring AOP的注解来实现这些功能,包括前置通知、后置通知、返回通知和异常通知。 ### 前置通知(Before通知) 前置通知在目标方法执行之前运行。在Spring AOP中,我们使用`@Before`注解...

    Spring 注解学习手札(三) 表单页面处理

    在本篇《Spring注解学习手札(三)表单页面处理》中,我们将深入探讨Spring框架中关于处理Web表单的关键注解和技术。在实际的Web开发中,表单处理是用户交互的重要组成部分,Spring提供了强大的支持,使得开发者能够...

    动态代理和注解Spring.rar

    文件“动态代理”可能包含了关于Spring AOP的详细解释,包括如何创建自定义的切面,定义切入点表达式,以及如何配置和使用各种通知类型。而“注解Spring”这部分可能涵盖了Spring中主要注解的用法和示例,以及如何在...

    使用Spring的注解方式实现AOP入门

    在学习过程中,您可以参考压缩包中的`springAOP`文件,其中可能包含示例代码和详细的步骤解释,帮助您更好地理解和实践这些概念。动手实践是掌握Spring AOP的最好方式,通过创建自己的切面和通知,您将能够深入理解...

Global site tag (gtag.js) - Google Analytics