欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring注解详解2

程序员文章站 2022-07-08 14:39:55
...

1.Spring自带的@Component注解及扩展

 

一@Component:定义Spring管理Bean使用方式如下:

@Component("标识符")

POJO类

 

在类上使用@Component注解,代表它成了一个组件,如果标识符不写,默认就是类名,一般推荐还是自己写个名字。

 

定义测试Bean类:

package cn.javass.spring.chapter12;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.context.ApplicationContext;  
import org.springframework.stereotype.Component;  
@Component("component")  
public class TestCompoment {  
    @Autowired  
    private ApplicationContext ctx;  
    public ApplicationContext getCtx() {  
        return ctx;  
    }  
} 

 

定义测试类和测试方法

 

package cn.javass.spring.chapter12;  
//省略import  
public class ComponentDefinitionWithAnnotationTest {  
    private static String configLocation = "classpath:chapter12/componentDefinitionWithAnnotation.xml";  
    private static ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocation);  
    @Test  
    public void testComponent() {  
        TestCompoment component = ctx.getBean("component", TestCompoment.class);  
        Assert.assertNotNull(component.getCtx());  
    }  
}  

 

测试成功说明被@Component注解的POJO类将自动被Spring识别并注册到Spring容器中,是自动支持自动装配。

 

@AspectJ风格的切面可以通过@Component注解标识其为Spring管理Bean,而@AspectJ注解不能被Spring自动识别并注册为Bean,必须通过@Component注解来完成

 

二,@Repository:@Component扩展,被@Repository注解的POJO类表示DAO层实现,从而见到该注解就想到DAO层实现,使用方式和@Component相同;

 

1.定义测试Bean类:

package cn.javass.spring.chapter12.dao.hibernate;  
import org.springframework.stereotype.Repository;  
@Repository("testHibernateDao")  
public class TestHibernateDaoImpl {  
} 

 

2.定义测试方法:

@Test  
public void testDao() {  
TestHibernateDaoImpl dao =  
ctx.getBean("testHibernateDao", TestHibernateDaoImpl.class);  
Assert.assertNotNull(dao);  
} 

 

 测试成功说明被@Repository注解的POJO类将自动被Spring识别并注册到Spring容器中,且自动支持自动装配,并且被@Repository注解的类表示DAO层实现。

 

三、@Service:@Component扩展,被@Service注解的POJO类表示Service层实现,从而见到该注解就想到Service层实现,使用方式和@Component相同;

 

四、@Controller:@Component扩展,被@Controller注解的类表示Web层实现,从而见到该注解就想到Web层实现,使用方式和@Component相同;

相关标签: spring注解