zoukankan      html  css  js  c++  java
  • Spring学习的第二天

        第二天总共学习了以下内容:

    • spring中的ioc常用注解;
    • 案例使用xml方式和注解方式实现单表的CRUD操作(但还是需要xml配置文件,并不是纯注解的配置);
    • 改造基于注解的Ioc案例,使用纯注解的方式实现,spring的一些新注解的使用;
    • spring和junit的整合;

    一、ioc常用注解:

     1.1关于创建对象的,就如同xml中的<bean>标签,@Component(用在其他类),@Controller(一般用在表现层的类),@Service(一般用在业务层的类),@Repository(一般用在持久层的类)

     1.2关于注入数据的,@AutoWired(自动按类型注入,可以作用在变量上和方法上,可以没有setter方法);

               @Qualifier(在按照类型注入的基础上再按照名称注入。它给类成员注入时不能单独使用,需要依赖于@AutoWired,但是在给方法注入时可以,即在形参前面使用,@Qualifier(“xx”));

                       @Resource(直接按照bean的id进行注入,可以独立使用)

       以上三个注解只能注入bean类型的数据,而基本类型的数据和String类型无法使用上述注解实现。另外,集合类型的注入只能通过xml来实现。                                                                                                                                 

             @Value(用于注入基本类型和String类型的数据,属性:value,用于指定数据的值。它可以使用spring中的SpEl(spring中的el表达式),写法:${ 表达式})

    1.3用于改变作用范围,@Scope(用于指定bean的作用范围,属性:value,指定范围,取值有:singleton(默认),prototype)

    1.4关于生命周期的:@PostConstruct(用于指定初始化的方法),@PreDestory(用于指定销毁方法)

       在使用注解配置时,只需要在bean.xml文件中告知spring在创建容器时需要扫描的包,用<context:component-scan>标签中的base-package属性即可。

    二、关于DBUtils

      DBUtils是dao层的一个小框架,封装了JDBC,可以将结果集映射到JavaBean。DBUtils中不传DataSource创建对象是保证多条语句共用同一事务,(在一个业务里面有多次跟数据库交互的过程)。

    •   JDBC:原生访问数据库的方式,访问数据库麻烦;
    •        DBUtils:对JDBC简单封装,能自动封装查询结果集,需要在代码中写SQL;
    •        Mybatis:进一步封装jdbc,Sql语句写在配置文件中,面向对象操作,有一、二级缓存;
    •        Hibernate:对jdbc封装的最彻底,纯面向对象,可以不写SQL;

    三、Spring的新注解

      首先创建一个config包,创建一个名为SpringConfiguration的类,其中包名和类名可以随便起。

      @Configuration,指定当前类为一个主配置类;

      @ComponentScan,用于通过注解指定Spring在创建容器时要扫描的包,属性:value,它和base-packages的作用是一样的,如同配置了<context:component-scan>。

      @Bean,用于把当前方法的返回值作为bean对象存入spring的Ioc容器中,属性:name,用于指定bean的id,默认值为当前方法的名称。

      细节:当我们使用该注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象。查找的方式和AutoWired注解的作用是一样的。

           此时在获取spring的核心容器对象时,不再使用classPathXmlApplication(“xxx.xml”)了,而是使用AnnotationConfigApplicationContext(配置类.class),因为此时已经不使用bean.xml文件进行配置了。

      @Import,用于导入其他的配置类到主配置类,属性:value,用于指定其他配置类的字节码。当我们使用@Import注解之后,有@Import注解的类就是父配置类,而导入的都是子配置类。

      @PropertySource,用于指定properties文件的位置,属性:value,用于指定文件的名称和路径。关键字:classpath,表示类路径下,若有包则写包路径,如@PropertySource(“classpath:jdbcConfig.properties”)。

    四、Spring整合Junit的配置

      1.导入spring整合junit的jar包;(spring-test)

      2.使用Junit提供的一个注解把原有的main方法替换成spring提供的@Runwith注解,写在测试类的类上;(@Runwith(springJunit4classRunner.class))

      3.告知spring的容器,spring的ioc创建是基于xml还是基于注解配置的,并说明位置;( @ContextConfiguration,属性:①locations:指定xml文件的位置,加上classPath的关键字,表示在类路径下;②classes:制定注解类所在的位置,注解  的配置文件);

      4.对bean对象自动注入;(@AutoWired)

      

     1 @RunWith(SpringJUnit4ClassRunner.class)
     2 @ContextConfiguration(locations = "classpath:bean.xml")
     3 public class AccountServiceTest {
     4 
     5     @Autowired
     6     @Qualifier(value = "accountService")
     7     private IAccountService accountService;
     8 
     9     @Test
    10     public void transferTest(){
    11         String sourceName = "aaa";
    12         String targetName = "ccc";
    13         Float money = 500.23f;
    14         accountService.transfer(sourceName,targetName,money);
    15     }
    16 }

      当使用spring5.x版本时,要求junit的jar至少在4.12及以上的版本;

  • 相关阅读:
    FICO-错误日志集
    FICO-财务凭证验证及替代
    FICO-Payment Terms 收付款条件和分期付款设置
    ABAP-JCO服务端连接问题
    LES-整车企业物料拉动系统的设计和实现
    工程数学-微积分
    web前端(15)—— JavaScript的数据类型,语法规范2
    web前端(14)—— JavaScript的数据类型,语法规范1
    web前端(13)—— 了解JavaScript,JavaScript的引入方式
    web前端(12)—— 页面布局2
  • 原文地址:https://www.cnblogs.com/zxgCoding/p/11479836.html
Copyright © 2011-2022 走看看