博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring 注解
阅读量:6829 次
发布时间:2019-06-26

本文共 2387 字,大约阅读时间需要 7 分钟。

1.Required (在编译时检查作用,不会给你注入)

This annotation simply indicates that the affected bean property must be populated at configuration time

也就是说:需要注入的类在配置的就得配置好,Required只是检查需要注入的类又没有注入,没有就会出错

例如配置文件这样:

 这时如果你要是这样启动服务:就会报错

@Required  //检查是否注入	public void setUserDAO( UserDAO userDAO) {		this.userDAO = userDAO;	}

 但是如果这样:就不会报错,应该autowired 先给程序注入,required再去检查是否成功注入

@Required   //检查是否注入 	@Autowired  //注入	public void setUserDAO( UserDAO userDAO) {		this.userDAO = userDAO;	}

 2.Autowired(自动注入)  默认是按照类型注入

 <1>如上例中的配置文件,调用服务时只需要这样调用

@Autowired	public void setUserDAO( UserDAO userDAO) {		this.userDAO = userDAO;	}

 <2>如果配置中存在两个相同类型的bean如:

 这个时候如果单独用上面的配置是会报错的,因为配置中有两个相同类型的bean,这时我们要指定bean的标志(bean的名字)

@Required   //j检测是否注入	@Autowired //注入      //Qualifier 指定name的bean	public void setUserDAO(@Qualifier(value="u") UserDAO userDAO) {		this.userDAO = userDAO;	}

 <3>Autowired 还可以这样用@Autowired(@required=false)  表示不需要自动装载

<4>autowired 可以写在setter方法,一般方法,属性上,还可以注入数据类型,map类型等,参考API文档

3.Qualifier和Autowired结合

 

4.Resource指定注入的bean   默认先按名称注入,没有就按类型(import javax.annotation.Resource)需要导入common-annotations.jar

 

业务调用:

@Resource//默认按userDAO找配置  	public void setUserDAO( UserDAO userDAO) {		this.userDAO = userDAO;	}

也可以这样:

 

@Resource(name="u2") //指定名字  	public void setUserDAO( UserDAO userDAO) {		this.userDAO = userDAO;	}

 

 5.Component 不用再xml中配置每个bean,只需要在配置文件中配置

 在类中:

@Component("userDAO")  //自动将类生成对象加到容器中,默认时key是userDAOImplpublic class UserDAOImpl implements UserDAO {	@Override	public void add(User user) {		// TODO Auto-generated method stub		System.out.println("user added successful");	}}

 

@Componentpublic class UserService {	private UserDAO userDAO;	public UserDAO getUserDao() {		return userDAO;	}	@Resource	public void setUserDAO( UserDAO userDAO) {		this.userDAO = userDAO;	}	public void add(User user) {		userDAO.add(user);	}}

 测试类

@Test	public void jDomTest() throws JDOMException, IOException	{		ApplicationContext context=new ClassPathXmlApplicationContext("classpath*:beans.xml");		UserService service=(UserService)context.getBean("userService");		service.add(new User());	}

 说明:beans.xml配置文件指定扫描com.spring 包下的所有类,并将所有在类头加油“Component”的类都生成对象放到集合中

  <context:annotation-config/>

   <context:component-scan base-package="com.spring">
   </context:component-scan>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/fjsnail/p/3496463.html

你可能感兴趣的文章
Node.js中流的使用
查看>>
ES6 常用新特性讲解
查看>>
关于直播几个视频格式的概念总结
查看>>
CentOS 7下安装Tomcat到服务
查看>>
[wireshark]实用技巧整理收集
查看>>
Es6 写的文件import 起来解决方案详解
查看>>
[译] ConstraintLayout基础系列之参照线guidelines
查看>>
JS中可能用得到的全部的排序算法
查看>>
actor ceo ex3ndr 介绍的actor,java,gwt,j2obj的框架体系
查看>>
Mysql 出现the right syntax to use near USING BTREE错误解决办法
查看>>
npm scripts 官方文档(译)
查看>>
C++考题
查看>>
Windows系统下angular2环境搭建
查看>>
PHP - 魔术常量、魔术方法
查看>>
Python技术点
查看>>
es5 操作符运算标准
查看>>
前端技术选型的遗憾和经验教训
查看>>
详解ChinaCache分层自动化测试平台
查看>>
亚马逊发布新的AWS Step Functions集成
查看>>
敏捷2016大会主题演讲:现代敏捷
查看>>