Spring注解

<context:component-scan base-package="com.zb(此处引号内填写需要扫描的最大的路径)" />

在spring_mybatis.xml和spring_mvc.xml中写入上述的一句代码

作用:自动扫描基准包(base-package)下的以及子包下的所有注解

 

1. @Service

@Service用于标注业务层组件

如果有一个类带了@Service注解,将自动注册到Spring Ioc容器,不需要再在applicationContext里面定义bean了。

1.带括号
@Service("userService")
public class UserServiceImpl implements UserService{
    ...
}

2.不带括号
@Service
public class UserServiceImpl implements UserService{
    ...
}

@Service后边带("xxx")的,表示给当前类命名一个别名,方便注入到其他需要用到的类中; 

也可以不指定,不加的话,默认别名就是当前类名,但是首字母小写,例:userServiceImpl

2. @Autowired 自动注入/装配

@Autowired 注释:它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 

通过 @Autowired的使用来消除 set ,get方法。

 

此处作简要介绍,@Autowired详解见此博客:https://blog.csdn.net/u013257679/article/details/52295106

3. @param

//Java代码
public User login(@Param("userCode") String userCode, @Param("userPassword") String userPassword);

---------------------------------
<!-- xml代码 -->
<!-- 用户登录 参数以@param的方式传入,返回值:用户 -->
    <select id="login" resultType="User">
		SELECT * FROM `smbms_user` 
			WHERE `userCode`=#{userCode} AND `userPassword`=#{userPassword}
	</select>

在Java代码中用@param取别名,

作用:

(1) 取别名,传给xml文件中的sql语句,可以与原来的形式参数名不同;

(2) 当取别名时,xml文件中接受别名,可以传多个参数,理论来讲可以传很多个参数,但是建议超过4个参数,最好用Map或者对象传递。

 

4. @Qualifier

需求:

因为@Autowired默认是根据类型进行注入的,因此如果有多个类型一样的Bean候选者,则需要限定其中一个候选者,否则将抛出异常。

@Qualifier限定描述符能根据名字进行注入,通过这个描述符,表明了哪个实现类才是我们所需要的,我们修改调用代码,添加@Qualifier注解,需要注意的是@Qualifier的参数名称必须为注册过的或者用注解标示过的别名,例子如下:

    @Autowired
    @Qualifier("userMapper")
    private UserMapper userMapper;
    @Qualifier("roleMapper")
    private RoleMapper roleMapper;
    //此处使用@Qualifier用以区分Bean

此处的userMapper和roleMapper在笔者的spring_mybatis.xml中,用扫描自动自动注册的方式进行了注册了

<!-- 
    MapperScannerConfigurer自动扫描com.zb.mapper包下的以及子包下的所有映射器(mapper)接口,并自动注册为MapperFactoryBean;
    basePackage:指定扫描的基准包
    UserMapper接口在com.zb.mapper路径下,所以自动扫描注册,并取默认别名:userMapper
    RoleMapper接口在com.zb.mapper路径下,所以自动扫描注册,并取默认别名:roleMapper
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.zb.mapper" />
</bean>

注:@Qualifier的用法不只此一种,此处只是列举笔者使用的方式;

详细推荐博客:https://blog.csdn.net/lovin_fang/article/details/78537547

其他

@Controller用于标注控制层组件(如struts中的action),@Repository用于标注数据访问组件,即DAO组件,而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

(文中如有错误,敬请留言指出,不胜感谢)

此贴持续更新。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值