一、配置非自定义的Bean(数据源DataSource模型)

DBCP数据源:
        导入dbcp的jar包:dbcp+pool+connector
        
        代码实现:
            //创建数据源对象
            BasicDataSource dataSource = new BasicDataSource();
            //设置数据库的基本参数
            dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql:///test");
            dataSource.setUsername("****");
            dataSource.setPassword("****");
            //从数据源中获得连接资源
            Connection connection = dataSource.getConnection();
            //jdbc操作
            System.out.println(connection);
            
    C3P0数据源:
        导入c3p0的jar包:c3p0+connector
        
        代码实现:    
            //创建数据源对象
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            //设置数据库的基本参数
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setJdbcUrl("jdbc:mysql:///test");
            dataSource.setUser("****");
            dataSource.setPassword("****");
            //从数据源中获得连接资源
            Connection connection = dataSource.getConnection();
            //jdbc操作
            System.out.println(connection);
            
    在spring中配置数据源对象:
        <!-- 将jdbc.properties文件加载到spring的容器中 需要用到context命名空间  
            classpath:类加载路径 开发环境下就是src
        -->
        <context:property-placeholder location="classpath:jdbc.properties"/>
        
        <!-- 配置c3p0数据源 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driver}"></property>
            <property name="jdbcUrl" value="${jdbc.url}"></property>
            <property name="user" value="${jdbc.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
        </bean>

二、Spring的注解开发

注解与xml配置文件的优缺点?
        xml优点:解耦合  缺点:配置繁琐
        注解优点:快    缺点:耦合

1、Spring原始注解
        出现的目的主要是对自定义的Bean的xml配置的替代
        
        1.1开发步骤:
            1、导入额外jar:spring-aop.jar
            2、在xml中开启组件扫描
                <!-- 组件扫描:告知spring容器哪些包下的bean需要被扫描 -->
                <context:component-scan base-package="com.cyxz"></context:component-scan>
            3、在实体Bean上使用注解进行开发
                @Component("customerDao")
                public class CustomerDaoImpl implements CustomerDao
                
                @Component("customerService")
                public class CustomerServiceImpl implements CustomerService
                
                @Autowired
                private CustomerDao customerDao;
            4、测试
            
            
        1.2 注解的详解    
            IoC:创建对象
                @Component(该Bean对象的标识/id):在需要被spring进行实例化Bean上,参数字符串可以不写,默认是当前类名的首字母小写
                @Controller:控制器  使用web层的Bean上 例如Action
                @Service:服务  使用service层的Bean 例如CustomerServiceImpl
                @Repository: 仓库   使用dao层的Bean上  例如CustomerDaoImpl
            DI:依赖注入,注解的注入可以省略set方法
                @Autowired:自动按照实体的类型进行注入
                @Qualifier("customerDao") //此处@Qualifier是按照名称匹配  但是在此处@Qualifier结合@Autowired一起使用
                @Resource(name="customerDao") //@Resource=@Autowired+@Qualifier
                
                @Value(值)
                
            其他:
                @Scope:配置bean的作用范围,取值singleton(默认)和prototype    注解配置默认是prototype,xml配置默认是singleton
                
                @PostConstruct:指定初始化方法 //在构造之后执行
                PreDestroy:指定销毁方法 //在销毁之前执行
                
            注意;重点注解:@Controller、@Service、@Repository、@Autowired、@Scope
            
            注意:开发准则:Bean是自定义那么使用注解配置、Bean是非自定义的那么使用xml配置
    
    2、Spring新注解(次重点)
        Spring的新注解出现的目的完全替代xml配置文件
        
        使用配置类 替代  xml文件
        使用注解   替代  标签
        
        @Configuration //标注该类是一个spring的配置类
        @ComponentScan("com.cyxz") //组件扫描
        @Import({DataSourceConfiguration.class}) //引入其他的配置类
        @PropertySource({"classpath:jdbc.properties"})  //加载jdbc.properties文件
        @Value("${jdbc.driver}") //匹配spring容器中的key
        @Bean(name="dataSource") //将该方法的返回值以指定的名称存储到spring容器中

三、Spring集成Junit

原有的测试类:
        @Test
        //测试从spring中获得Service实例对象
        public void test1() throws Exception{
            ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
            CustomerService customerService = (CustomerService) app.getBean("customerService");
            customerService.save();
        }
        
    spring集成junit:
        开发步骤:
            1、导入额外的jar
                spring-test.jar
                spring-aop.jar
                junit.jar
                
            2、通过注解的形式指定测试类 和 配置文件
                执行测试类:@RunWith(SpringJUnit4ClassRunner.class)
                指定配置文件(类):@ContextConfiguration("classpath:applicationContext.xml")
            3、测试spring容器中的哪个对象就通过注解注入哪个对象
                
            4、编写测试方法
            
        代码实现:    
            @RunWith(SpringJUnit4ClassRunner.class)
            //@ContextConfiguration("classpath:applicationContext.xml") //加载配置文件
            @ContextConfiguration(classes={SpringConfiguration.class}) //加载配置类
            public class SpringJunitTest {
                @Autowired
                private CustomerDao customerDao;
                @Autowired
                private CustomerService customerService;
                
                @Test
                public void test1(){
                    customerDao.save();
                }
                @Test
                public void test2(){
                    customerService.save();
                }
                
            }

Spring知识点小结(二)的更多相关文章

  1. Spring知识点小结(四)

    一.JdbcTemplate(jdbc模版--抽取的工具) web阶段DBUtils:        QueryRunner runner = new QueryRunner(dataSource); ...

  2. Spring知识点小结(三)

    一.aop的简介 aop:面向切面编程    aop是一种思想,面向切面编程思想,Spring内部提供了组件对aop进行实现    aop是在运行期间使用动态代理技术实现的思想    aop是oop延 ...

  3. Spring知识点小结(一)

    一.Spring的简介 1.spring是一个full-stack轻量级开源框架    2.spring的两大核心        IoC: inverse of control  控制反转:反转是对象 ...

  4. Spring知识点小结汇总

    Spring部分 1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控 ...

  5. Spring知识点总结(二)之Spring IOC

    1.创建bean类,并在spring中进行配置交由spring来管理1. IOC(DI) - 控制反转(依赖注入)    所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管 ...

  6. Hibernate知识点小结(二)

    一.持久化对象和标识符    1.持久化类        配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id)        3.持久 ...

  7. Struts2知识点小结(二)

    一.结果视图的配置    <result name="success">/success.jsp</result>        1.局部结果视图      ...

  8. SpringBoot 系列教程之事务隔离级别知识点小结

    SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...

  9. disruptor笔记之四:事件消费知识点小结

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. C++ 友元(系转载多人博客,添加个人见解)

    原文地址:http://blog.csdn.net/caroline_wendy/article/details/16916441 原文地址:http://www.cnblogs.com/CBDoct ...

  2. 什么是shell? bash和shell有什么关系?

    什么是Shell?      shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序.你在提示符下输入的每个命令都由shell先解释然后传给Linux内核.      ...

  3. web项目开发流程

    对于一个web项目,在实际编码之前,有一些通用的步骤来planning a website: 0.Defining the project (predr0->dr0) 对于外部项目,客户一般会发 ...

  4. Azure DocumentDB 正式发布

    DocumentDB 简介 一种 NoSQL JSON 数据库 Azure DocumentDB 提供完全托管的 NoSQL 数据库服务,高度可用,自动缩放,开发简易,可以加速并预测性能.它适合诸如 ...

  5. UIButton中的**EdgeInsets是做什么用的?

    UIButton中的**EdgeInsets是做什么用的? UIEdgeInsetsMake Creates an edge inset for a button or view.An inset i ...

  6. linux下查看磁盘文件系统

    df -Th fdisk -l parted -l lsblk -f blkid

  7. c# HttpWebRequest与HttpWebResponse

    [转]c# HttpWebRequest与HttpWebResponse 绝技 如果你想做一些,抓取,或者是自动获取的功能,那么就跟我一起来学习一下Http请求吧. 本文章会对Http请求时的Get和 ...

  8. C++中类与结构体的区别

    相信有一点专业知识的人都知道,C语言是一种结构化语言.它层次清晰,便于按模块化方式组织程序,易于调试和维护.在很大程度上,标准C++是标准C的超集.实际上,所有C程序也是C++程序,然而,两者之间有少 ...

  9. HBuilde H5开发,关于JSON的Storage存储

    今天踩坑了,在这里记一下. 我想做一个列表,开始是一个一个复制粘贴,然后发现这样太不灵活了,如果我有更多内容要填难道还要再一个一个复制吗? 所以我想到直接用JS动态生成最好,我的思路是这样的: //首 ...

  10. C#图解教程读书笔记(第9章 语句)

    文件头的Using是Using指令,不是using语句 using (TextWriter tw = File.CreateText("xixi.txt")) { tw.Write ...