Spring注解注入
1、使用注解来向Spring容器注册Bean
spring 通过classpath中扫描标签类来实现
在spring.xml 的配置如下:
<context:annotation-config />
<context:component-scan base-package="msg.common.bo" />
加载上面配置后,spring 会自动扫描msg.common.bo下加有注释的类
a.@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入
eg:
java:
@Resource(name = "PaymentAccountQuery")
private PaymentAccountQuery paymentAccountQuery;
xml:
b.@Servie默认是
c.@Autowire 默认按照类型来装配,可以和@Qualifier 联合使用可以使用根据名称进行
d.@Qualifiler 限定符, 用于细选
e.@Component 可以在XML中引用
@Component
是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上
f.@Service 对应的是业务层的bean
g.@Resource 是注入方式
@Resource(name ="实例对象名")
private 类名 实例对象名
1、@controller 控制器(注入服务)
2、@service 服务(注入dao)
3、@repository dao(实现dao访问)
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。
下面写这个是引入component的扫描组件
<context:component-scan base-package=”com.mmnc”>
其中base-package为需要扫描的包(含所有子包)
1、@Service用于标注业务层组件
2、@Controller用于标注控制层组件(如struts中的action)
3、@Repository用于标注数据访问组件,即DAO组件.
4、@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Service public class UserServiceImpl implements UserService { }
@Repository public class UserDaoImpl implements UserDao { } getBean的默认名称是类名(头字母小写),如果想自定义,可以@Service(“***”)这样来指定,这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”)
这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。