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

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
Last Week in AI
Last Week in AI
J
Java Code Geeks
V
Visual Studio Blog
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
宝玉的分享
宝玉的分享
博客园 - Franky
博客园 - 【当耐特】
Jina AI
Jina AI
月光博客
月光博客
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
Apple Machine Learning Research
Apple Machine Learning Research
SecWiki News
SecWiki News
H
Heimdal Security Blog
Y
Y Combinator Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hacker News - Newest:
Hacker News - Newest: "LLM"
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Secure Thoughts
MongoDB | Blog
MongoDB | Blog
Forbes - Security
Forbes - Security
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
L
LINUX DO - 最新话题
M
MIT News - Artificial intelligence
Schneier on Security
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Schneier on Security
罗磊的独立博客
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Troy Hunt's Blog
T
The Blog of Author Tim Ferriss

博客园 - 樊凯

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方式进行匹配。

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