美文网首页
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