欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring纯注解开发-基本注解。

程序员文章站 2022-07-12 23:02:55
...

目录

spring开发过程中多配置文件的形式

spring基础注解

spring生命周期相关的方法。

@AutoWired 自定义类型的注入。

@ValueJDK基本类型的注入

扫描注解详情

排除策略

包含策略

对于注解开发的思考!


这个阶段配置文件为主。

spring开发过程中多配置文件的形式

1,扫描包注解

<!--    写包名,扫描包下的所有注解-->
    <context:component-scan base-package="core"/>

2,引用外部spring配置文件()

<import resource="classpath:applicationContext.xml"/>

spring基础注解

@Component,@Service,@Repository,@Controller。=相当于bean的自动配置,默认id是小驼峰。【也可以在value中指定id】

@Scope:  @Scope("singleton")

@Lazy 懒加载

spring生命周期相关的方法。

把接口方法换成类中方法上的注解。

InitializingBean <bean init-method> [email protected]

DisposableBean <Bean destory-method>[email protected]

注意:这两个注解是javaee规范提供的。

自定义类型的注入。

@AutoWired 自定义类型的注入。

放在属性或者set方法上。

若想指定id,则要加@Qualifier("id")。

javaee规范注解@[email protected][email protected](id),但是需要额外导包【不推荐使用】。

@ValueJDK基本类型的注入

(8中基本类型+String),@Value("${propertyName}")  但是注入不了集合类型!

代码:

@Component
public class Person {
    @Value("${name}")
    private String name;
    @Value("${age}")
    private Integer age;
    @Value("${birthday}")
    private Date birthday;
}getter和setter略。

XML中

<!--    写包名,扫描包下的所有注解-->
    <context:component-scan base-package="core"/>
<!--    导入外部配置文件-->
    <context:property-placeholder location="classpath:info.properties"/>

test代码:

 /**
     * 用于测试:spring工厂得到对象实例
     */
    @org.junit.Test
    public void test1(){
        ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
        Person person = (Person) ctx.getBean("person");
        System.out.println(person);
        System.out.println(person.getName());
        System.out.println(person.getAge());
        System.out.println(person.getBirthday());
    }

结果:

spring纯注解开发-基本注解。

扫描注解详情

<context:component-scan base-package="core"/>表示扫描当前包及其子包。

排除策略

 

spring纯注解开发-基本注解。

 

aspectj:切入点表达式,主要是指定包;

assignable:课指定,指定类名;

annotation:指定注解类型;

custom:自定义排除策略【主要是框架底层开发】

Regex:正则表达式【不常用】

包含策略

和排除策略使用的参数一样,语义相反。

首先先让spring默认扫描策略失效【因为是自己指定的扫描策略】

<context:component-scan base-package="core" use-default-filters="false">

使spring默认扫描策略失效。(毕竟是自己指定的扫描。。。)

对于注解开发的思考!

配置互通:spring的配置文件和注解是互通的。

配置文件的权限最高【为了解注解的耦合】。

什么情况下使用注解?什么情况下使用配置文件?

我们自己写的类用注解,有些类不是我们写的,例如SqlSessionFactoryBean【spring整合mybatis的类】需要配置文件写。

我们此时的注解只是一些简单注解,不能对复杂的类型进行属性注入【比如所集合类型】,还不能完全脱离配置文件。

敬请期待:spring高级注解。