当前位置:编程学习 > asp >>

Asp.net 之Cookie简单介绍与使用

Spring基于注解实现Bean定义支持如下三种注解:

 

 

 

Spring自带的@Component注解及扩展@Repository、@Service、@Controller,如图12-1所示;
JSR-250 1.1版本中中定义的@ManagedBean注解,是Java EE 6标准规范之一,不包括在JDK中,需要在应用服务器环境使用(如Jboss),如图12-2所示;
JSR-330的@Named注解,如图12-3所示。
 \

图12-1 Spring自带的@Component注解及扩展

 \

 

图12-2 JSR-250中定义的@ManagedBean注解及自定义扩展

 

 \

图12-3 JSR-330的@Named注解及自定义扩展

 

图12-2和图12-3中的自定义扩展部分是为了配合Spring自带的模式注解扩展自定义的,并不包含在Java EE 6规范中,在Java EE 6中相应的服务层、DAO层功能由EJB来完成。

 

在Java EE中有些注解运行放置在多个地方,如@Named允许放置在类型、字段、方法参数上等,因此一般情况下放置在类型上表示定义,放置在参数、方法等上边一般代表使用(如依赖注入等等)。

 

 

 

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

 

 

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

 

java代码: Java代码  @Component("标识符") 
POJO类 

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

 


定义测试Bean类:

 

java代码: Java代码  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; 
    } 

 

 

 

定义测试类和测试方法:

 

java代码: Java代码  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风格的切面可以通过@Compenent注解标识其为Spring管理Bean,而@Aspect注解不能被Spring自动识别并注册为Bean,必须通过@Component注解来完成,示例如下:

 

java代码: Java代码  package cn.javass.spring.chapter12.aop; 
//省略import 
@Component 
@Aspect 
public class TestAspect { 
    @Pointcut(value="execution(* *(..))") 
    private void pointcut() {} 
    @Before(value="pointcut()") 
    public void before() { 
        System.out.println("=======before"); 
    } 

 

 

通过@Component将切面定义为Spring管理Bean。

 

 

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

     

1、定义测试Bean类:

 

java代码: Java代码  package cn.javass.spring.chapter12.dao.hibernate; 
import org.springframework.stereotype.Repository; 
@Repository("testHibernateDao") 
public class TestHibernateDaoImpl { 
  

 

 

2、Spring配置文件使用chapter12/ componentDefinitionWithAnnotation.xml即可且无需修改;

 

3、定义测试方法:

 

java代码: Java代码  @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相同;

 

1、定义测试Bean类:

 

java代码: Java代码  package cn.javass.spring.chapter12.service.impl; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 
import org.springframework.stereotype.Service; 
import cn.javass.spring.chapter12.dao.hibernate.TestHibernateDaoImpl; 
@Service("testService") 
public class TestServiceImpl { 
    @Autowired 
    @Qualifier("testHibernateDao") 
    private TestHibernateDaoImpl dao; 
    public TestHibernateDaoImpl getDao() { 
        return dao; 
    } 

 

2、Spring配置文件使用chapter12/ componentDefinitionWithAnnotation.xml即可且无需修改;

 

 

3、定义测试方法:

 

java代码: Java代码  @Test 
public void testService() { 
    TestServiceImpl service = ctx.getBean("testService", TestServiceImpl.class); 
    Assert.assertNotNull(service.getDao()); 

 

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

 

 

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

 

1、定义测试Bean类:

 

java代码: Java代码  package cn.javass.spring.chapter12.action; 
//省略import 
@Controller 
public class TestAction { 
    @Autowired 
    private TestServiceImpl testService; 
    
    public void list() { 
        //调用业务逻辑层方法 
    } 

 &

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,