美文网首页
Spring框架-3(IOC下)

Spring框架-3(IOC下)

作者: zhonj | 来源:发表于2017-09-27 17:09 被阅读0次

Spring系列文章

Spring框架-1(基础)
Spring框架-2(IOC上)
Spring框架-3(IOC下)
Spring框架-4(AOP)
Spring框架-5(JDBC模板&Spring事务管理)
Spring框架-6(SpringMvc)
Spring框架-7(搭建SSM)
Spring框架-8(SpringMVC2)

上一篇文章使用的XML配置的方法使用Spring的IOC功能。如果Spring每一个类都需要这么麻烦的配置,做起项目来那不累死头牛?所以我们分析一下使用注解的方式来实现。

首先先看下我们需要分析一些什么东西,如下图:


IOC注解.png

注解方式的实现

1.在applicationContext.xml配置文件中开启组件扫描

  • Spring的注解开发:组件扫描
<context:component-scan base-package="com.zhong.springdemo"/>
  • 注意:可以采用如下配置,这样是扫描com.itheima包下所有的内容
<context:component-scan base-package="com.zhong"/>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:contex="http://www.springframework.org/schema/context"
       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">
    <contex:component-scan base-package="com.zhong.springdemo"/>
  
</beans>

在使用对象中加上注解

@Component(value="userController") -- 相当于在XML的配置方式中 <bean id="userService" class="...">

//将这个类交个spring管理
@Component("userController")
public class MyController {
    //通过spring把myService注入到这个资源内
    @Autowired
    private MyService myService;

    //测试
    public void test() {
        myService.showTest();
    }
}

//将这个类交个spring管理
@Component("userService")
public class MyService {
    //注入一个属性
    @Value("这是一个测试语句")
    private String textStr;

    //打印注入的属性值
    public void showTest() {
        System.out.println(textStr);
    }
}

编写测试代码

public static void main(String[] args) {
        // 使用Spring的工厂
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 通过工厂获得类:
        MyController myController = (MyController) applicationContext.getBean("userController");
        myController.test();
    }
  • 运行结果:

这是一个测试语句

到这就说明我们的注解方式使用成功了。

总结

Bean管理的常用注解

  1. @Component:组件.(作用在类上)

  2. Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)

  • @Controller -- 作用在WEB层

  • @Service -- 作用在业务层

  • @Repository -- 作用在持久层

  • 说明:这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强

  1. 属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法)
  • 如果是注入的普通类型,可以使用value注解

    @Value -- 用于注入普通类型

  • 如果注入的是对象类型,使用如下注解

    @Autowired -- 默认按类型进行自动装配

  • 如果想按名称注入

    @Qualifier -- 强制使用名称注入

    @Resource -- 相当于@Autowired和@Qualifier一起使用
    强调:Java提供的注解 属性使用name属性

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

  1. Bean的作用范围注解

注解为@Scope(value="prototype"),作用在类上。值如下:

singleton     -- 单例,默认值

prototype     -- 多例
  1. Bean的生命周期的配置(了解)

注解如下:

@PostConstruct    -- 相当于init-method
    
@PreDestroy       -- 相当于destroy-method

好了看到这,我们的IOC暂时基础学完了,下一篇文章我们来分析AOP吧!

相关文章

网友评论

      本文标题:Spring框架-3(IOC下)

      本文链接:https://www.haomeiwen.com/subject/cfajextx.html