惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
爱范儿
爱范儿
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
Y
Y Combinator Blog
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
M
MIT News - Artificial intelligence
博客园 - Franky
V
Visual Studio Blog
I
InfoQ
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
博客园 - 司徒正美
L
LangChain Blog

博客园 - 樊凯

Weblogic10.3客户端jar文件 PHP5操作MySQL数据库 - 樊凯 - 博客园 Struts2拦截器 使用AppServ快速建立php运行环境 Hibernate缓存 一个关于SpringSecurity很好的参考文档 Struts2.1.6 + Spring2.5+Hibernate3.2整合 JQuery和Struts实现Ajax文件上传 struts1.x+spring2.5+JPA(hibernate)整合 使用Apache的commons-codes加密 Spring备忘四(涵盖Spring2.5) Sping备忘三(涵盖Spring2.5) Spring备忘二(涵盖Spring2.5) - 樊凯 - 博客园 Spring备忘一(涵盖Spring2.5) ubuntu遇到的错误 Ubuntu命令(更新中) 异常java.lang.UnsupportedClassVersionError: Bad version number in .class file 根据ResultSetMetaData对象动态创建pojo或其集合(JDBC) 天生我牛必有用
Spring备忘(涵盖Spring2.5)
樊凯 · 2009-05-14 · via 博客园 - 樊凯

在Spring2.5中使用Annotation注解进行注入:

在使用注解进行注入的时候需要设置配置文件的schema:

<?xml version="1.0" encoding="UTF-8"?>

<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">

</beans>

并在配置文件中打开对Annotation的支持:

<context:annotation-config></context:annotation-config>

<bean id="userDAO" class="com.kay.bean.UserDAO"></bean>

<bean id="userService" class="com.kay.bean.UserServices">

</bean>

使用@Autowired(不推荐)注解:

修改UserService类:

import org.springframework.beans.factory.annotation.Autowired;

public class UserServices {

@Autowired

private UserDAO userDAO;

public void setUserDAO(UserDAO userDAO) {

this.userDAO = userDAO;

}

public void add(){

userDAO.add();

}

}

@Autowired注解可以加在属性之上,也可以加在set方法之上,该注解利用byType方式进行自动装配。

如果存在多个匹配的Bean,就会抛出异常。如果要使用多个匹配的Bean中的一个那么可以使用@Qualifier注解:

public class UserServices {

@Autowired

@Qualifier("userDAO")

private UserDAO userDAO;

public void add(){

userDAO.add();

}

}

那么就只会使用一个名称为userDAO的Bean进行注入。如果userDAO Bean不存在,那么Spring容器就会抛出异常。如果开发的时候,知道这个Bean有可能不存在,为了避免异常的出现,可以设置@Autowired注解的required属性为false。

public class UserServices {

@Autowired(required=false)

@Qualifier("userDAO")

private UserDAO userDAO;

public void add(){

userDAO.add();

}

}

由于@Autowired注解和@Qualifier注解来自Spring的API,需要在我们的程序中耦合进Spring的代码,所以推荐使用下面的注解。

使用@Resource注解:

public class UserServices {

@Resource

private UserDAO userDAO;

public void add(){

userDAO.add();

}

}

指定name属性:

public class UserServices {

@Resource(name="userDAO" )

private UserDAO userDAO;

}

指定type属性:

public class UserServices {

@Resource(type=UserDAO.class)

private UserDAO userDAO;

}

同时指定name和type属性:

public class UserServices {

@Resource(type=UserDAO.class,name="userDAO")

private UserDAO userDAO;

}

@Resource属性同样可以应用在set方法之上。

n 如果同时指定了name和type,则从Spring容器中找到唯一匹配的bean进行装配,找不到则抛出异常

n 如果指定了name,则从容器中根据byName查找匹配的bean进行装配,找不到则抛出异常

n 如果指定了type,则从容器中根据byType找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常

n 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配,如果没有匹配则通过byType方式进行匹配。

注意,自动注入虽然可以减少配置文件的长度及体积,但是会带来很多未知的问题,比如上面按名称和按类型匹配的时候的约束及限制,所以不推荐使用自动注入。