Spring新注解

Spring新注解

Configuration&&ComponentScan

在前面的xml注解中,我们会用到扫描自己的类,只能注解自己定义的类.而像Runner这些 还是需要用Constructor注入方式来注入.所以就有了新的注解方式,可以对所有的进行注解.

  1. 与resources同级目录下创建一个config包,写一个java文件.
    • 该类是一个配置类,作用和bean.xml一样.
    • 新注解 :
      • @Configuration 指定当前类是一个配置类 .
        *** 细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写.***
        ** 当扫描包下的配置类时,只有加了@configuration 才能被扫到. 比如config下的JdbcConfig,获取对象时配置类的class 写的依然是SpringConfig,里面什么都没有,只有@ComponentScan 注解要扫描的包({“com.hk”,“config”}),一样会去读取加了@configuration 的JdbcConfig.**
        一般都是一个 SpringConfig的大配置类,去扫描其他的小配置类.
        XML中QueryRunner是通过Constructor方式注入DataSource数据.而在这里,是创建一个方法,返回值是QueryRunner, 参数是DataSource. XML注入后就直接将class指向的对象写进了spring容器中.而该方法没有存入,所以能存入Spring容器中 这两个方式就相等了. 传入的参数DataSource继续用@bean注解写就好.返回值为DataSource数据源对象.
        于是有了**@Bean** 用于把当前方法的返回值作为bean对象存入spring的IOC容器中.
        此时为单例对象, 要在该类前加上个注解@Scope(“prototype”)
        属性: name:指定bean的id,当不写时,默认值是当前方法的名称.
        当我们用注解配置方法时,方法有参数,spring会去容器中找有没有可用的bean对象.查找方法同AutoWired .当有多个时,找名称相同的,当名称也没相同时报错. AutoWired里面所说的不改参数名用@Qualifier在这里也有,就是那里面的不需要配合AutoWired使用的情况,给方法参数注入.
      • @ComponentScan用于通过朱注解指定spring在创建容器时要扫描的包.
        属性:value 同 basePackages的作用是一样的,用于扫描… 等同于xml中配置了<context:component-scan base-package="com.hk">是一回事.
      • @Import 也可以不写@ComponentScan 和@Configuration 可以直接用@Import 在主配置类导入其他配置类的字节码. @Import(JdbcConfig.class)
AnnotationConfigApplicationContext
以前获取容器 都用的是 ApplicationContext的实现类 ClassPathXmlApplicContext读取的是("bean.xml")文件.而现在用的是注解.所以用的是另一个实现类AnnotationConfigApplicationContext.  **参数传入的是注解类的Class**
Value标签给成员变量配置文件数据

@value("${jdbc.driver}") [Spring的EL表达式]
private String driver;

jdbc.driver来自哪里 所以就有了 @propertySource 在主配置文件指明位置. properties一般都写在最外层的resources下, 位置在哪:还需要加路径. 关键字classpath表示类路径下… 所以应写成 @PropertySource(“classpath:com/hk/jdbcConfig.properites”) (这是假如在resources/com/hk里面)

由上可以看出,纯注解可以,但反而更加复杂了.所以还是用自定义的类用注解,给的类用XML来注入更好.

Spring整合JUnit

Junit 集成了一个main方法,JUnit不会知道是否使用了spring框架,所以在测试方法执行时没有IOC容器.
Spring整合Junit

  1. 导入Spring整合Junit的jar包. spring-test. 当使用Spring 5.x时,junit必须是4.12及以上.
  2. 使用Junit提供的一个注解把原有的main方法替换成Spring提供的. @RunWith(SpringJUnit4ClassRunner.class)
  3. 告知spring的运行器,spring和IOC创建是基于xml还是注解,并说明位置 @ContextConfiguration 属性有:location: 指定xml文件的位置,加上classpath关键字. classes:指定注解类所在的位置.提供字节码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值