spring的注解

还有注意的是,要使用注解来注入的话,要加入相关的jarlib/j2ee/common-annotations.jar

对于spring的配置文件applicationContext.xml的头子要配置一下,因为要注册一下多个对注解解释的处理器

用自动注入的是用的是注解的方式,主要有两种@Autowired@Resource,首先要声明的是

对于注解,xml这些东西是不会工作的,他们只是一个配置的作用,主要的工作是由spring的容器来完成,注解的完成思路是注解加入到相应的字段或者方法的上面,得到相应的字段名或者方法名,然后到配置文件中取找,找到了就注入

一,@Autowired(默认是根据类型来到spring的配置文件中找bean

它是由spring提供的

要用@Autowired的话,在配置文件中:

<context:annotation-config/> 

在相应的字段或者方法上面加上@Autowired

字段:

 @Autowired private DaoBean daoBean ;//默认是按照类型找

//@Autowired @Qualifier("daoBea"private DaoBean daoBean ;

//上面是按照名字找,如果没有找到就会报错

//@Autowired(required=true@Qualifier("daoBea"private DaoBean daoBean ;

//上面的request的是说一定要注入值

或者setter方法:

private DaoBean daoBean ;

    @Autowired

    public void setDaoBean(DaoBean daoBean){//相应的setter方法

     this.daoBean = daoBean ;

    }

二,@Resource(默认按照名字到配置文件中找,如果名字没有找到,就会按照类型找)

他是由j2ee提供的

要用到@Resource的话,在配置文件中:

<context:annotation-config/>

在相应的字段或者方法上面加上@Resource

字段:

 @Resource private DaoBean daoBean ;

 //按照名字找如果没找到不会在按照类型找了,报错

@Resource(name="daoBean"private DaoBean daoBean ;

或者setter方法:

private DaoBean daoBean ;

    @Resource

    public void setDaoBean(DaoBean daoBean){//相应的setter方法

     this.daoBean = daoBean ;

    }

用扫描包的方式注入:

<context:component-scan base-package=""/>这个会自动注册很多的处理器

在类的上面加@service ,@Repository,@Controller,@Component指定我这个类要被spring来管理;

对扫描到的类,就是相当于在配置文件中写<bean></bean>,这样我们就不要到配置文件中自己来配置了,为了防止以后真实项目中有成千上万个<bean>使得配置文件很臃肿

注意的是,这里面的属性还是需要注入的,这个扫描只是对自己这类而言,里面的属性还是要注入的

//这里如果不配置名字,那么默认是为类名,把第一个字母小写

@Service("serviceBean"@Scope("prototype")

public class ServiceBean3 {

@Resource private DaoBean daoBean ;//注入这个daoBean

//初始化注解

@PostConstruct

public void init(){

System.out.println("初始化方法");

}

//销毁的方法

@PreDestroy

public void destory(){

System.out.println("销毁的方法");

}

}

自动注入

public class ServiceBean3 {

//在配置文件中配置后daoBean会自动注入

private DaoBean daoBean ;

//自动注入的时候要记得写setter方法

public void setDaoBean(DaoBean daoBean){

this.daoBean = daoBean;

}

配置文件中

<bean id="serviceBean" class="service" autowire="byName"/>

autowird里面可以还其他的指:byType(通过类型)constructor(通过构造方法),

autodetect(自动选择byType还是constructor), no ,defualt;

ps:

用注解的方式:

只配置一次:<context:annotation-config/>

对于每个包的扫描:<context:component-scan base-package="hwt.service"/>

如果不用xml的配置的话,那么就要使用在配置文件中注册处理器:

对于事务:<tx:annotation-driven transaction-manager="transactionManager"/>

对于AOP: <aop:aspectj-autoproxy/>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值