zoukankan      html  css  js  c++  java
  • Spring知识点小结(二)

    一、配置非自定义的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();
                    }
                    
                }
                










  • 相关阅读:
    PowerDesigner
    人工智能
    Tomcat已经配置好了,但是访问localhost:8080出错
    SQL重复记录查询-count与group by having结合查询重复记录
    SQL SERVER下图片的插入与读取(转)
    plsql中文乱码问题(显示问号)转
    2018福大软工实践第二次作业
    2018福大软工实践第一次作业
    2018福大软工实践第一次作业-自我介绍
    2017《面向对象程序设计》课程作业八
  • 原文地址:https://www.cnblogs.com/itworkerlittlewrite/p/9485999.html
Copyright © 2011-2022 走看看