Spring除了通过xml配置文件来创建并管理对象以外,还可以通过注解的方式来创建对象。
(一)什么是注解?以及注解的形式是什么?
(1)注解:代码里面的特殊标记,使用注解可以完成某种功能
(2)注解写法:@注解名称(属性名称=属性值)
(3)注解使用范围:类、方法、属性
(二)注解的具体使用
(1)Spring的bean管理(注解方式)
① spring中ioc的基本功能(通过配置文件xml创建对象),需引入 spring-beans.xsd约束文件
② spring中ioc的注解方式,需引入 spring-context.xsd约束文件
③ 配置文件xml中引入spring-context.xsd约束后,需配置开启注解扫描:
<!-- 开启注解扫描 -->
<context:component-scan base-package="com.csorpio"></context:component-scan>
注:工程中需引入aop的jar包:spring-aop-4.3.14.RELEASE.jar (部分功能会引用此包)
(2)注解方式创建对象(作用在类上)
① 在需创建的对象的类上使用注解
/**
* 通过@Component注解来创建对象
*/
@Component(value="user")
public Class User{
//具体实现
}
② 创建对象有四种注解方式
1)@Component
2)@Controller (web层)
3)@Service (业务层)
4)@Repository (持久层)
注:Spring中创建对象的这四种注解方式,功能一样,都是创建对象的,四种方式主要是创建对象之外也为了让标注类本身的用途更清晰,亦是方便在后续版本中增强和扩展相应的注解功能
(3)注解方式注入属性(@Autowired、@Resurce)
① Example: 创建service类,创建dao类,然后在service中调用dao的对象
1)创建service和dao对象
@Service(value="userService")
public Class UserService{
//具体实现
}
@Repository(value="userDao")
public Class UserDao{
//具体实现
}
2)在service类里面定义dao类型属性,并使用注解的方式完成对象的注入
@Service(value="userSercie")
public Class UserService{
@Autowired
private UserDao userDao;
}
注:@Autowired 自动装配或自动注入;@Resource(value="userDao") 注解亦可,name属性值必须写:通过注解创建dao对象时的value值或者通过xml配置文件创建对象的id值
(三)完整例子
(1)xml配置如下:
(2)代码如下:
//注:为了方便,所有类都写在一起了,但是测试时需分别创建不同的类文件
//测试类
public Class TestIOC{
@Test
public void test(){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService");
userService.userS();
}
}
//业务类
@Service
public Class UserService(){
@Autowired
private UserDao userDao;
@Autowired
private AuthorDao authorDao;
public void userS(){
System.out.println("userservice........");
userDao.userD();
authorDao.authorD();
}
}
//持久层
@Repository
public Class UserDao(){
public void userD(){
System.out.println("userDao........");
}
}
//持久层
@Repository
public Class AuthorDao(){
public void authorDao(){
Sysotem.out.println("authorDao.........");
}
}
(3)结果如下: