一 介绍
1 代码里面特殊标记,使用注解可以完成功能。
2 注解写法 @注解名称(属性名称 = 属性值)
3 注解使用在类上面,方法上面和属性上面
二 Spring注解开发准备
1 导入基本的jar包
2 导入aop jar包
3 创建类,创建方法
package Annotation;
import org.springframework.stereotype.Component;
/**
* Created by pc on 2017/9/14.
*/
@Component(value = "user")
public class User {
public void add(){
System.out.println("add............");
}
}
4 创建Spring配置文件,引入约束
(1)以前做IOC基本功能,引入约束beans
(2)做Spring的IOC注解开发,引入新的约束(context)
<?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:p="http://www.springframework.org/schema/p"
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 ">
<!--开启注解扫描-->
<context:component-scan base-package="Annotation"></context:component-scan>
</beans>
(3)配置.xml文件
<context:component-scan base-package="Annotation"></context:component-scan>
注释:开启注解扫描
- 到包里面扫描类,方法,属性上面是否有注解
5 创建对象有四个注解
Spring中提供@Component的三个衍生注解(功能目前讲是一致的)
- @Controller :WEB层
- @Service :业务层
- @Repository :持久层
这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强。目前这四个注解功能都是一样的,都创建对象。
6 创建对象单例还是多实例
三 测试
@Test
public void test2 (){
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
User user = (User) context.getBean("user");
user.add();
}
四 注解属性
1 注入属性的注解
- @Autowired 自动装配
- @Resource(name = "要注入对象id")
2 属性注入
UserService.java
package Annotation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* Created by pc on 2017/9/15.
*/
@Component(value = "userService")
public class UserService {
//1 定义dao类型属性
//在dao属性上面使用注解 完成对象注入
// @Autowired
@Resource(name = "userDao")
private UserDao userDao;
//使用注解方式时不需要set方法
public void add(){
System.out.println("userService......");
userDao.add();
}
}
UserDao.java
package Annotation;
import org.springframework.stereotype.Component;
/**
* Created by pc on 2017/9/15.
*/
@Component(value = "userDao")
public class UserDao {
public void add(){
System.out.println("userDao..........");
}
}
测试
public void test3(){
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
UserService service= (UserService) context.getBean("userService");
service.add();
}