Spring系列(六)注解开发和JavaConfig

导读:本篇文章讲解 Spring系列(六)注解开发和JavaConfig,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com


扩展:Spring系列学习汇总


一、如何使用注解进行开发
  • 前提开启注解属性支持和指定扫描包的路径!
  • 引入context文件头约束!
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启属性注解支持-->
    <context:annotation-config/>
    <!--指定扫描包的路径-->
    <context:component-scan base-package="entity"/>
</beans>
1.1、@Component

①实体类:增加 @Component注解

  • 代表该类已经被Spring容器来托管了 ,默认是单例的!
@Component
public class Person {

    private String name = "大大丁大大";
    private int age;
    private String like;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", like='" + like + '\'' +
                '}';
    }
}

②测试类:

public class TestAnonatation {
    public static void main(String[] args) {
        ApplicationContext Context = new ClassPathXmlApplicationContext("ContextAplication.xml");
        Person person = Context.getBean("person",Person.class);
        System.out.println(person);
    }
}

③执行结果:
在这里插入图片描述
④总结:

  • 这玩意就相当于xml中的:
<bean id="person" class="dyj.entity.Person">
1.2、@value
  • 属性的注入
    ①实体类:

  • @Value 可以用在属性上或者set()方法上!效果一致!

@Component
public class Person {

    @Value("大大丁大大")
    private String name;
    private int age;
    private String like;

    public void setName(String name) {
        this.name = name;
    }

    @Value("23")
    public void setAge(int age) {
        this.age = age;
    }

    public void setLike(String like) {
        this.like = like;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", like='" + like + '\'' +
                '}';
    }
}

②执行结果:
在这里插入图片描述

1.3、@Component的衍生注解

①@Controller

  • Controller层:@RestController是@Controller+@ResponseBody,这是SpringBoot中常用的注解!
    在这里插入图片描述

②@Service

  • Service层
    在这里插入图片描述

③@Repository

  • dao层:mapper和这个差不多,因为整合了Mybaise!
    在这里插入图片描述

④总结:

  • 这三个注解本质上没啥大的区别,名字不一样只是为了mvc分层而已!
  • 都是讲类交给Spring容器来托管!
1.4、@scope的作用域
  • 和xml中一致,没啥好细说的

  • singleton:默认的,Spring会采用单例模式创建这个对象。关闭工厂 ,所有的对象都会销毁。

  • prototype:多例模式。关闭工厂 ,所有的对象不会销毁。内部的垃圾回收机制会回收

二、JavaConfig
  • 如何完全脱离xml来进行bean的托管和注入呢?
  • 在Spring4中JavaConfig正式成为核心功能!
2.1、@Configuration

①无需xml文件了!实体类:

@Component
public class Person {

    private String name = "大大丁大大";
    private int age = 23;
    private String like = "钓鱼";

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getLike() {
        return like;
    }
}

②新建JavaConfig配置类:

@Configuration//这是一个配置类
public class JavaConfig {

    //这个相当于注册一个bean,方法名就是id,返回值就是calss
    @Bean
    public Person person(){
        return new Person();
    }
}

③测试类:

public class TestAnonatation {
    public static void main(String[] args) {
        //这里要传的值是class对象
        ApplicationContext context = new AnnotationConfigApplicationContext(Person.class);
        Person person = context.getBean("person",Person.class);

        System.out.println(person.getAge()+"````"+person.getName()+"`````"+person.getLike());
    }
}

④执行结果:
在这里插入图片描述

⑤总结:

  • 获取对象的方法:new AnnotationConfigApplicationContext(Person.class);
  • @Configuration 说明这是一个配置类
  • @Bean 这个相当于注册一个bean,方法名就是id,返回值就是calss
2.2、@Import
  • 协同开发:多人如何配合?
  • @Import(对象class) 导入其他配置类

①新建配置类:

@Configuration
public class JavaConfig2 {
}

②导入其他配置

@Configuration//这是一个配置类
@Import(JavaConfig2.class)
public class JavaConfig {

    //这个相当于注册一个bean,方法名就是id,返回值就是calss
    @Bean
    public Person person(){
        return new Person();
    }
}

③总结:

  • 相当于xml中的 impot 标签
  • 可以实现一个主,多个副,协同管理!

路漫漫其修远兮,吾必将上下求索~
如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧**转载请注明出处哦**

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/17094.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!