使用Java代码和注解完成Spring配置

使用Java代码和注解完成Spring配置

使用Java代码和注解进行Spring的配置。
个人理解:

  1. 使用Spring的时候可以使用XML文件配置,也可以使用Java代码配置。使用Java代码配置的时候,相当于使用Java类作为XML的配置文件,通过使用java代码创建bean实例,并通过java代码完成依赖的注入操作。当需要变更依赖注入时,可通过修改java代码实现。
  2. 使用注解配置的时候,个人理解存在两种方式第一种是注解+XML形式,第二种是Java代码+注解形式。使用Java+注解的形式,相当于在Java代码中指定组件扫描,在具体的bean中使用注解标识。
/*
  1.使用Java配置时,配置文件使用@Configuration修饰,在Java代码中使用@Bean修饰
  2.在获取bean时,通过AnnotationConfigApplicationContext获取
  3.如果需要结合注解配置时,则使用@ComponentScan注解开启扫描
 4.常用的注解有以下几类
*/
@Controller
@Bean
@Service
@Component
@Repository
@Autowired

使用Maven插件或者命令行创建一个普通的Java工程

具体创建过程省略

?
创建包结构:

?

按照web层,service层,数据库层的方式分别创建三个包
App.java是项目的启动文件
JavaConfiguration.java java配置类,不使用注解
AnnotationConfiguration.jar java+注解的配置类

?

在Pom文件内添加Spring的依赖

?

 <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.4.RELEASE</version>
    </dependency>

?
如果需要使用junit进行单元测试时,添加junit依赖

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
    </dependency>

代码解析

使用Java配置+注解的方式

web、service、repository层的代码分析

在包下分别创建文件:
每个类均有一个构造函数和一个addUser的方法构成。

?

web/UserController.java
在web层,模拟SpringMVC中的Controller层。此处使用@Controller注解配置此类,依赖项userService通过@Autowired自动装配。

@Controller
public class UserController {
    public UserController(){
        System.out.println("UserController 构造");
    }

    @Autowired
    private UserService userService;

    /*
    public  UserController(UserService userService){
        this.userService = userService;
    }*/

    public void addUser(){
        System.out.println("Controller:UserController");
        this.userService.addUser();
    }
}

?

service/UserService.java

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    /*
    public UserService(UserRepository userRepository){
        this.userRepository = userRepository;
    }
    */

    public UserService(){
        System.out.println("UserService 构造");
    }

    public void addUser(){
        System.out.println("service:addUser ");
        this.userRepository.addUser();
    }
}

?

Repositroy/UserRepository.java

@Repository
public class UserRepository {

    public UserRepository(){
        System.out.println("UserRepository 构造");
    }

    public void addUser(){
        System.out.println("Repository:addUser");
    }
}

?
?

UserController依赖UserService,UserService依赖UserRepository。其中UserController使用注解@Controller修饰,请其交给Spring管理。UserService使用@Service修饰,UserRepository使用@Repository修饰。使用@Autowired自动装配。
给类添加注解以后,相当于这几个bean都有spring管理。

?

配置类代码解析

AnnotationConfiguration.java
此文件是配置类,需要标注说明该文件是配置类,同时通过@ComponentScan指定进行组件扫描。

@Configuration
@ComponentScan
public class AnnotationConfiguration {

    /*
    @Bean("myController")
    MyController getMyController(){
        return new MyController();
    }*/
}

?

测试代码解析

本实例中引入junit
TestApp.java
特别注意,需要使用:AnnotationConfigApplicationContext
其他的使用方式和XML配置是一致的,无区别。

public class TestApp {

    ApplicationContext applicationContext;

    @Before
    public void setUp(){
        applicationContext =
                new AnnotationConfigApplicationContext(AnnotationConfiguration.class);
    }

    @Test
    public void TestUserController(){
        UserController userController =
                (UserController)applicationContext.getBean("userController");

        userController.addUser();
    }

}

运行结果

先运行构造函数

总结

为什么说是Java+注解的方式进行配置,使用Java代码书写配置类,相关Bean的配置使用的是注解。
其实还存在很多搭配:
java + java
xml + xml
xml + 注解

原文地址:http://blog.51cto.com/1423357/2086301

时间: 2024-08-01 09:09:48

使用Java代码和注解完成Spring配置的相关文章

基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - 静态资源.视图和消息器>两篇博文的介绍,我们已经配置好了Spring所需的基本配置.在这边博文中,我们将介绍怎么使用这些配置到实际项目中,并将web.xml文件替换为一个Java类. 我们使用Java代码来配置Spring,目的就是使我们的这些配置能够复用,对于这些配置的复用,我们采用继承和引入来实现

Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea

文章大纲 在xml中声明bean和注入bean 在xml中声明bean和自动注入bean 自动扫描bean和自动注入bean 对自动扫描bean增加约束条件 首次接触spring请参考 Spring 3.0 学习-环境搭建和三种形式访问 1.典型的Spring XML 配置文件表头 <?xml version="1.0" encoding="UTF-8"?><!-- 一般化的Spring XML 配置 --> <beans xmlns=

Spring学习笔记1——IOC: 尽量使用注解以及java代码(转)

在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IOC,mybatis,SpringMVC的基础知识,表单数据验证,文件上传等) 2.服务器异步发送邮件给注册用户.(学习消息队列) 3.用户登录.(学习缓存.Spring Security) 4.其他. 边学习边总结,不定时更新.项目环境为Intellij + Spring4. 一.准备工作. 1.m

Spring学习笔记1——IOC: 尽量使用注解以及java代码

在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IOC,mybatis,SpringMVC的基础知识,表单数据验证,文件上传等) 2.服务器异步发送邮件给注册用户.(学习消息队列) 3.用户登录.(学习缓存.Spring Security) 4.其他. 边学习边总结,不定时更新.项目环境为Intellij + Spring4. 一.准备工作. 1.m

redis在spring中的配置及java代码实现

1.建一个redis.properties属性文件 # Redis Setting redis.addr = 127.0.0.1 redis.port = 6379 redis.auth = master redis.maxIdle = 200 redis.maxActive = 1024 redis.maxWait = 10000 redis.timeOut = 10000 redis.testOnBorrow = true 2.新建一个RedisUtil.java文件,文件代码如下: pac

Spring MVC框架下在java代码中访问applicationContext.xml文件中配置的文件(可以用于读取配置文件内容)

<bean id="propertyConfigurer" class="com.****.framework.core.SpringPropertiesUtil" lazy-init="false"> <property name="locations"> <list> <value>classpath:config/sys.properties</value> &

Spring装配bean--02通过Java代码装配bean

Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系 Spring提供了三种主要的装配机制: 在XML中进行显式配置 在Java中进行显式配置 隐式的bean发现机制和自动装配 2在Java中显式配置 尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化装配是更为推荐的方式,但是当你要将第三方库中的组件装配到你的应用中,这时就必须显式的配置bean 显式配置包括:Java和XML,我更推荐使用Java类配置,就像上文中的JavaConfig那样 JavaCon

Spring Boot 使用Java代码创建Bean并注册到Spring中

从 Spring3.0 开始,增加了一种新的途经来配置Bean Definition,这就是通过 Java Code 配置 Bean Definition. 与Xml和Annotation两种配置方式不同点在于: 前两种Xml和Annotation的配置方式为预定义方式,即开发人员通过 XML 文件或者 Annotation 预定义配置 bean 的各种属性后,启动 Spring 容器,Spring 容器会首先解析这些配置属性,生成对应都?Bean Definition,装入到 DefaultL

Spring学习系列(三) 通过Java代码装配Bean

上面梳理了通过注解来隐式的完成了组件的扫描和自动装配,下面来学习下如何通过显式的配置的装配bean 二.通过Java类装配bean 在前面定义了HelloWorldConfig类,并使用@ComponentScan和@Configuration注解,@Configuration注解表明了这个类是一个java配置类,该类用在获取Spring应用上下文时,告诉Spring创建bean的细节,通过@ComponentScan,我们启用了Spring的自动组件扫描,现在就让我们来看如果通过java类来显