Spring之IOC注解方式的依赖注入

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011301372/article/details/81450124

Spring框架中Bean管理的常用注解

@Component:组件.(作用在类上)
Spring中提供@Component的三个衍生注解;(功能目前来讲是一致的)

  • @Controller——作用在web层
  • @Service—–作用在业务层
  • @Repository—–作用在持久层

Dao层

public interface UserService {
    public void sayHello();
}
/**
 * UserDaoImpl交给IOC的容器
 */
//在持久层中,Component注解也可以用,但是最好使用每一层对应的注解
    //@Component(value="userDao")
    @Repository(value="ud")
public class UserDaoImpl implements UserDao {
    public void save(){
        System.out.println("保存客户。。。");
    }
}

属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法)

  • 如果是注入的普通类型,可以使用value注解
    • @value——用于注入普通类型
  • 如果注入的是对象类型,使用如下注解
    • @Autowired—-默认按类型进行自动装配
  • 如果想按名称注入
    • @Qualifier —-强行使用名称注入
    • @Resource——相当于@Autowired和@Qualifier一起使用
      • Resource是java的注解,Spring框架也支持该注解
      • 使用name属性
/**
 * 组件注解,标记类,
 * <bean id="userService" calss="cn.zst.demo1.UserServiceImpl"></>
 * 等价于@Component(value="userService")
 */
@Component(value="userService")
public class UserServiceImpl implements UserService {
    //给name属性注入小王的字符串,setName方法可以省略不写
    @Value(value="小王")
    private String name;


    /**
     * //@Autowired 按照类型自动装配
     *    @Autowired
     @Qualifier(value = "ud")//按名称注入,Qualifier和Autowired要配合使用
     */
//是java的注解,Spring框架支持该注解,去容器中按照name找
    @Resource(name="ud")
    private UserDao userDao;
    public void sayHello(){
        System.out.println("helloSpring"+name);
        userDao.save();
    }
}

Bean的作用范围和生命周期的注解

Bean的作用范围注解

  • 注解为@Scope(value=”prototype”),作用在类上,值如下:
    • singleton —-单例,默认值
    • prototype—-多例

Bean的生命周期的配置

  • 注解如下:
    • @PostConstruct—-相当于init-method
    • @PreDestory—-相当于destory-method

Spring 框架整合JUnit单元测试

  • 为了简化了JUnit的测试,使用Spring框架也可以整合测试
  • 具体步骤
    • 要求:必须先有JUnit的环境(即导入JUnit的jar包)
    • 步骤一:在程序中引入:spring-test.jar
    • 步骤二:在具体的测试类上添加注解
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Test1 {
    //注入UserServiceImpl类的id
    @Resource(name="userService")
    private UserService us;
    @Test
    public void run1(){
        //原来:获取工厂,加载配置文件,getBean
        us.sayHello();
    }
}

猜你喜欢

转载自blog.csdn.net/u011301372/article/details/81450124