浅谈Spring之注解Component 和Autowired实现IOC和DI

浅谈Spring之IOC、DI中写到过根据XML配置文件方式进行Spring开发,那需要我们去编写配置代码,重复且复杂。所以开发Spring的团队推出了注解开发,用注解代替xml配置文件可以简化配置,提高开发效率。


要想进行注解开发,必须在xml中进行一个开启包扫描的配置,描目的是在扫描这些包中的类,查询哪些类上有注解,有就执行注解操作。

<context:component-scan base-package="包名"/>

① @Component

这个注解主要用于代替xml中的bean配置、相当于之前
相当于<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean>
注意:当此注解作用到类中,会将本类的类名首字母小写作为bean的id属性,将此类完全限定名作为bean的class属性
为了见名知意,提供了3个衍生注解:

  • @Repository:用于设置dao层
  • @Service: 用于Service层
  • @Controller:用于web层
    这三个作用和component注解是一样的,只不过是为了区分三层开发

② @Autowired

容器中获取对象的3种方式:
ac.getBean(“userDao”);
ac.getBean(UserDao.class);
ac.getBean(“userDao”,UserDao.class)
对应的注解就是:

  • @Resource :由jdk自带,表达根据id获取。jdk9之后就废弃了。

  • @Autowired :根据类型获取对象

  • @Qualifie :它要与@Autowired一起配合使用, 根据id和类型获取对象

最多使用的还是@Autowired!!!!!!!也就是依赖注入,给对象进行赋值。

简单实现代码如下:

applicationContext.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="
       	http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd
       	http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context.xsd">
		
    <context:component-scan base-package="com.itheima" />
<!--    <bean id="userDao" class="UserDaoImpl"></bean>-->

<!--    <bean id="userService" class="UserServiceImpl">-->
<!--        <property name="userDao" ref="userDao"/>-->
<!--    </bean>-->

</beans>
dao层
@Repository
public class UserDaoImpl implements UserDao {
    public void testUserDao() {
        System.out.println("执行userdao");
    }
}
service层
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    public void testUser() {
        userDao.testUserDao();
    }
}
servlet层<用junit单元测试>
public class TestUser {
    @Test
    public void testUs(){
        //创建Spring框架的IOC容器
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) ac.getBean("userServiceImpl");
        userService.testUser();
    }
}
测试结果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值