Spring_5 使用注解注入bean
2017-03-08 本文已影响676人
mm_cuckoo
导入jar 包
包名 |
---|
commons-logging-1.1.3.jar |
log4j-1.2.17.jar |
spring-beans-4.2.4.RELEASE.jar |
spring-context-4.2.4.RELEASE.jar |
spring-core-4.2.4.RELEASE.jar |
spring-expression-4.2.4.RELEASE.jar |
spring-aop-4.2.4.RELEASE.jar |
创建 bean.xml 文件,并添加约束(可以在帮助文档docs/spring-framework-reference/html/xsd-configuration.html
中找到)
添加注解的约束,在beans 中添加http://www.springframework.org/schema/context/spring-context.xsd
示例如下
<?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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- bean definitions here -->
<!-- 开启注解扫描
(1) 到包里面扫描 类 ,方法,属性上是否有注解
-->
<context:component-scan base-package="com.sfox"/>
<!-- 扫描属性上的注解,这个只会扫描属性上的注解,不会扫描类上的注解 -->
<!-- <context:annotation-config/> -->
</beans>
创建bean对象(以User 对象为例)
package com.sfox.spring.ano;
import org.springframework.stereotype.Component;
@Component(value="user")
public class User {
public void add(){
System.out.println("user add........");
}
}
上面代码就是使用注解,在上面的例子中使用@Component注解,value设置的值对应 xml 中配置bean 的 id。
测试代码如下
public class SpringTest {
@Test
public void anoTest(){
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
User user = (User) context.getBean("user");
user.add();
}
}
注解创建对象
@Component 注解,作用在class 类上,创建实体对象。
Spring 中提供@Component 的三个衍生注解:
- @Controller :WEB 层
- @Service :业务层
- @Repository :持久层
这三个注解是为了让标注类本身的用途清晰,Spring 在后续版本会对其增强。
- @Component
- @Controller
- @Service
- @Repository
这四个功能一样
注解注入属性
- @Autowired : 自动注入
package com.sfox.spring.xmlAano;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component(value="userBean")
public class UserBean {
@Autowired
private UserInfo userInfo;
public void addUser(){
System.out.println("userBean add.....");
userInfo.showName();
}
}
- @Resource(name="userBean") : 设置注入,指定注入对象的name ,name 和注解创建对象中value值对应,和xml中配置bean的id 相对应。
package com.sfox.spring.xmlAano;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
@Service(value="serviceDao")
public class ServiceDao {
@Resource(name="userBean")
private UserBean userBean;
@Resource(name="bookBean")
private BookBean bookBean;
public void add(){
System.out.println("service dao add.....");
userBean.addUser();
bookBean.bookAdd();
}
}