zoukankan      html  css  js  c++  java
  • Spring注解驱动开发----->容器day02

    1.原生的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:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans  
                            http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
                            http://www.springframework.org/schema/context  
                            http://www.springframework.org/schema/context/spring-context-3.1.xsd  
                            http://www.springframework.org/schema/mvc  
                            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    
        <!-- 添加包扫描 只要标注了@Controller/@Service/@Repository/@Component,都会自动扫描加入组件中 -->
        <!-- use-default-filters="false"表示禁用掉默认的过滤规则 -->
        <context:component-scan base-package="com.atguigu"
            use-default-filters="false"></context:component-scan>
    
        <bean id="person" class="com.atguigu.bean.Person">
            <property name="name" value="张三" />
            <property name="age" value="18" />
        </bean>
    
    </beans>     

    2.添加分层架构

    dao层:
    
    package com.atguigu.dao;
    
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class BookDao {
    
    }
    
    
    service层:
    
    package com.atguigu.service;
    
    import org.springframework.stereotype.Service;
    
    @Service
    public class BookService {
    
    }
    
    
    controller层:
    
    package com.atguigu.controller;
    
    import org.springframework.stereotype.Controller;
    
    @Controller
    public class BookController {
    
    }

    3..使用注解在配置类中添加扫描:

    package com.atguigu.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.ComponentScan.Filter;
    import org.springframework.context.annotation.ComponentScans;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.FilterType;
    import org.springframework.stereotype.Controller;
    import org.springframework.stereotype.Service;
    
    import com.atguigu.bean.Person;
    
    /**
     * 配置类==原来的配置文件
     * @author Administrator
     *
     */
    @Configuration    //告诉spring这是一个配置类
    //@ComponentScan(value="com.atguigu",includeFilters={
    //        @Filter(type=FilterType.ANNOTATION,classes={Controller.class,Service.class})
    //},useDefaultFilters=false)    //添加扫描
    @ComponentScans(
            value ={ 
                    @ComponentScan(value="com.atguigu",includeFilters={
                            @Filter(type=FilterType.ANNOTATION,classes={Controller.class,Service.class})
                    },useDefaultFilters=false)    
            }
            )
    //@ComponentScan value指定要扫描的包
    //excludeFilters = Filter[]指定按照什么规则排除哪些组件
    //includeFilters = Filter[]指定扫描的时候只需要包含哪些组件
    //useDefaultFilters=false表示禁用掉默认的过滤规则
    public class MainConfig {
    
        @Bean("yikuan")
        public Person person(){
            return new Person("李四",20);
        }
    }

    4.测试类:

    package com.yikuan.test;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.atguigu.bean.Person;
    import com.atguigu.config.MainConfig;
    
    public class TestAnnotation {
        ClassPathXmlApplicationContext cc;
    
        @Before
        public void init() {
            cc = new ClassPathXmlApplicationContext("beans.xml");
        }
    
        @Test
        public void test01(){
            Person bean = cc.getBean("person",Person.class);
            System.out.println(bean);
        }
        
        @Test
        public void test02(){
            AnnotationConfigApplicationContext aa = new AnnotationConfigApplicationContext(MainConfig.class);
            Person bean = aa.getBean(Person.class);
            System.out.println(bean);
            //查看id的值
            String[] beanNamesForType = aa.getBeanNamesForType(Person.class);
            for (String name : beanNamesForType) {
                System.out.println(name);
                //此时的默认id名字为【person】
                //使用@Bean("yikuan")就可以修改bean对象id的名字
                //注意!spring-context版本问题,低版本有些不可以在@Bean后面加()修改名字
            }
        }
        
        @SuppressWarnings("resource")
        @Test
        public void test03(){
            AnnotationConfigApplicationContext aa = new AnnotationConfigApplicationContext(MainConfig.class);
            String[] name = aa.getBeanDefinitionNames();
            for (String string : name) {
                System.out.println(string);
            }
        }
    
        @After
        public void destory() {
            cc.close();
        }
    }    
    
    
    结果:
    org.springframework.context.annotation.internalConfigurationAnnotationProcessor
    org.springframework.context.annotation.internalAutowiredAnnotationProcessor
    org.springframework.context.annotation.internalCommonAnnotationProcessor
    org.springframework.context.event.internalEventListenerProcessor
    org.springframework.context.event.internalEventListenerFactory
    mainConfig
    bookController
    bookService
    yikuan
  • 相关阅读:
    SQL Server 2008 Windows身份验证改为混合模式身份验证
    SQL中给datetime类型变量赋值
    结婚三周年特此@Mark一下
    搞笑的【国庆出游五大注意事项】
    利用SVNListParentPath增加http浏览仓库根目录的功能
    如果年底买不到CC就出手小指吧
    svn备份策略
    缺乏配置管理造成的常见问题
    高速公路开车必看的注意事项
    山雨欲来踏上Java学习之路
  • 原文地址:https://www.cnblogs.com/yikuan-919/p/9718097.html
Copyright © 2011-2022 走看看