首页 技术 正文
技术 2022年11月7日
0 收藏 344 点赞 812 浏览 1708 个字

启用注解配置:

1.context:annotation-config

该配置表示启用注解。

2.context:component-scan base-package=”.

该配置表示扫描哪些包下的注解,该配置隐式注册了多个对注解进行解析的处理器,其中包括了配置项里面的注解所使用的处理器。所以,在配置了以后,就不用再配置。

注解类:

@Component、@Repository、@Service、@Controller、

@Service:用于标注业务层组件。

@Repository:用于标注数据访问组件,即DAO组件。

@Controller:用于标注控制层组件,如Struts中的Action。

@Component:泛指组件,当组件不要好归类时,可以使用这个注解进行标注。

Autowired和Resource

建议使用Resource

@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。

类的实现1--对成员变量进行标注:public class UserServiceImpl implements IUserService {    @Autowired private UserDao userDao;……}类的实现2--对方法进行标注:public class UserServiceImpl implements IUserService {    private UserDao userDao;    @Autowired     public void setUserDao(UserDao userDao) {          this.userDao = userDao;  }}

required,Qualifier和autoWrite配合

autoWrite默认按照类型来装配

如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。

1) 可能存在多个UserDao实例

Java代码:    @Autowired    public void setUserDao(@Qualifier("userDao") UserDao userDao) {       this.userDao = userDao;    }这样,Spring会找到id为userDao的bean进行装配。

2) 可能不存在UserDao实例

Java代码:    @Autowired(required = false)    public void setUserDao(UserDao userDao) {       this.userDao = userDao;    }

Resource

@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按byName自动注入罢了。@Resource有两个属性是比较重要的,分别是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。

@Resource装配顺序

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

如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常;

如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;

如果既没有指定name,又没有指定type,则自动按照byName方式进行装配(见2);如果没有匹配,则回退为一个原始类型(UserDao)进行匹配,如果匹配则自动装配。

参考:

http://jiaxiaoyuan1204.blog.163.com/blog/static/65553152011350147451/

http://yedward.net/?id=339

我的微信二维码如下,欢迎交流讨论

欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!

微信订阅号二维码如下:

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289