我是靠谱客的博主 爱笑皮皮虾,最近开发中收集的这篇文章主要介绍Spring注解开发一、Spring注解开发二、使用JavaConfig实现配置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、Spring注解开发
    • 1.搭配环境
    • 2.bean和属性的注解
    • 3.衍生注解
    • 4.自动装配注解
    • 5.作用域注解
    • 6.小结
  • 二、使用JavaConfig实现配置


一、Spring注解开发

1.搭配环境

在Spring4之后,要使用注解开发,必须要保证aop的包导入!
在这里插入图片描述
beans.xml配置:

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">


    <!--指定要扫描的包,这个包下的注解就会生效-->
    <context:component-scan base-package="com.gaolang.pojo"/>
    <context:annotation-config/>
    
</beans>

com.gaolang.pojo包下的实体类:
User.java

package com.gaolang.pojo;
public class User {
    private String name;

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + ''' +
                '}';
    }
}

2.bean和属性的注解

  • @Component 等价于 <bean id="user" class="com.gaolang.pojo.User"/>
    可以使用此注解描述 Spring 中的 Bean,但它是一个泛化的概念,仅仅表示一个组件(Bean),并且可以作用在任何层次。使用时只需将该注解标注在相应类上即可。
  • @Value 等价于 <property name="name" value="高朗"/>
    作用是通过注解将常量、配置文件中的值、其他bean的属性值注入到变量中,作为变量的初始值。

User.java

package com.gaolang.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

//等价于  <bean id="user" class="com.gaolang.pojo.User"/>
@Component
public class User {

//    等价于<property name="name" value="高朗"/>
    @Value("高朗")
    private String name;

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + ''' +
                '}';
    }
}

测试类:

import com.gaolang.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        User user = context.getBean("user", User.class);
        System.out.println(user.toString());
    }
}

运行结果:

User{name='高朗'}

3.衍生注解

@Component 的衍生注解,web开发中,按照mvc三层架构分层!功能用法相同。

  • @Repository
    用于将数据访问层(DAO层)的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
  • @Service
    通常作用在业务层(Service 层),用于将业务层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
  • @Controller
    通常作用在控制层(如 Struts2 的 Action),用于将控制层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。

4.自动装配注解

前面文章已经写了,文章指路:bean的自动装配

5.作用域注解

  • @Scope默认是单例模式(singleton)

  • 如果需要设置的话@scope(“prototype”)

  • 1.singleton单例模式,

全局有且仅有一个实例

  • 2.prototype原型模式,

每次获取Bean的时候会有一个新的实例

  • 使用时只需将该注解标注在相应类上即可

在这里插入图片描述

6.小结

  • xml与注解:
  1. xml更加万能,适用于任何场合!维护简单方便
  2. 注解不是自己类使用不了,维护相对复杂!
  • xml与注解最佳实践:
  1. xml用来管理bean;
  2. 注解只负责完成属性的注入;
  • 我们在使用的过程中,只需要注意一个问题:必须让注解生效,就需要开启注解的支持:
    <context:component-scan base-package="com.gaolang.pojo"/>
    <context:annotation-config/>

二、使用JavaConfig实现配置

完全通过Java代码实现,不需要beans.xml配置,但是需要一个配置类

  • pojo实体类User.java
package com.gaolang.pojo;


import org.springframework.beans.factory.annotation.Value;

public class User {

//    等价于<property name="name" value="高朗"/>
    @Value("高朗")
    private String name;

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + ''' +
                '}';
    }
}
  • 配置类beansConfig.java:

@Configuration:代表这是一个配置类,就和我们之前看的beans.xml
@ComponentScan(“com.gaolang.pojo”) 等价于 <context:component-scan base-package="com.gaolang.pojo"/>
@Import(XXX.class):加其他的配置类
@Bean:相当于bean标签

package com.gaolang.config;

import com.gaolang.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

//@Configuration代表这是一个配置类,就和我们之前看的beans.xml
//@ComponentScan("com.gaolang.pojo") 等价于 <context:component-scan base-package="com.gaolang.pojo"/>
//如果要加其他的配置类,@Import(XXX.class)
@Configuration
@ComponentScan("com.gaolang.pojo")
public class beansConfig {

    //这个相当于注册一个bean标签
    //这个方法的名字,就相当于bean标签中的id属性
    //这个方法的返回值,就相当于bean标签中的class属性
    @Bean
    public User user(){
        return new User();
    }
}
  • 测试类:
    ApplicationContext context = new AnnotationConfigApplicationContext(beansConfig.class);
import com.gaolang.config.beansConfig;
import com.gaolang.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MyTest {

    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(beansConfig.class);

        User user = context.getBean("user", User.class);
        System.out.println(user.toString());
    }
}

最后

以上就是爱笑皮皮虾为你收集整理的Spring注解开发一、Spring注解开发二、使用JavaConfig实现配置的全部内容,希望文章能够帮你解决Spring注解开发一、Spring注解开发二、使用JavaConfig实现配置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部