Spring的Java配置方式

Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。

1     @Configuration 和 @Bean

Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的:

1、@Configuration 作用于类上,相当于一个xml配置文件;

2、@Bean 作用于方法上,相当于xml配置中的<bean>;

2 示例

该示例演示了通过Java配置的方式进行配置Spring,并且实现了Spring IOC功能。

  2.1 创建工程以及导入依赖(Maven)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.qiaoliqiang</groupId>
    <artifactId>spring-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>com.jolbox</groupId>
            <artifactId>bonecp-spring</artifactId>
            <version>0.8.0.RELEASE</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <!-- 资源文件拷贝插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- java编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

  2.2   编写User对象

package cn.qlq;

public class User {
    private String username;
    private String password;
    private int age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

 

  2.3   编写UserDAO 用于模拟与数据库的交互(注意此DAO没有打注解)

package cn.qlq;

import java.util.ArrayList;
import java.util.List;

/**
 * 模拟UserDao查询数据库
 *
 * @author liqiang
 *
 */
public class UserDao {
    /**
     * 模拟查到10个 用户
     *
     * @return
     */
    public List<User> queryUserList() {
        List<User> result = new ArrayList<User>();
        // 模拟数据库的查询
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setUsername("username_" + i);
            user.setPassword("password_" + i);
            user.setAge(i + 1);
            result.add(user);
        }
        return result;
    }

}

  2.4   编写UserService 用于实现User数据操作业务逻辑(声明service注解,且自动注入dao对象)

package cn.qlq;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

//声明是service层对象
@Service
public class UserService {
    @Autowired // 自动注入Spring容器中的dao层对象(byType注入)
    private UserDao UserDao;

    public List<User> queryUserList() {
        // 调用userDAO中的方法进行查询
        return this.UserDao.queryUserList();
    }

}

  2.5   编写SpringConfig 用于实例化Spring容器

打上@Configuration注解,同时打上@ComponentScan配置扫描的包。

@Bean用于向容器中放入对象,如果在UserDao类前面打上@Repository注解就不用@Bean方式

package cn.qlq;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration // 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
@ComponentScan(basePackages = "cn.qlq") // 配置扫描包
public class SpringConfig {

    @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
    public UserDao getUserDAO() {
        return new UserDao(); // 直接new对象做演示
    }

}

注意:方法名是作为返回对象的名字的,因此一般不带get,也就是上述放入spring容器的bean的name为getUserDAO

  2.6   编写测试方法 用于启动Spring容器

package cn.qlq;

import java.util.List;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * 测试类
 *
 * @author liqiang
 *
 */
public class Test {

    public static void main(String[] args) {
        // 通过Java配置来实例化Spring容器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

        // 在Spring容器中获取Bean对象
        UserService userService = context.getBean(UserService.class);

        // 调用对象中的方法
        List<User> list = userService.queryUserList();
        for (User user : list) {
            System.out.println(user.getUsername() + ", " + user.getPassword() + ", " + user.getPassword());
        }

        // 销毁该容器
        context.destroy();
    }

}

结果:

username_0, password_0, password_0
username_1, password_1, password_1
username_2, password_2, password_2
username_3, password_3, password_3
username_4, password_4, password_4
username_5, password_5, password_5
username_6, password_6, password_6
username_7, password_7, password_7
username_8, password_8, password_8
username_9, password_9, password_9

总结:

  从以上的示例中可以看出,使用Java代码就完美的替代xml配置文件,并且结构更加的清晰。

时间: 2024-10-17 01:09:20

Spring的Java配置方式的相关文章

SpringBoot学习(二)--&gt;Spring的Java配置方式

二.Spring的Java配置方式 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.@Configuration 和 @Bean Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的: 1.@Configuration 作用于类上,相当于一个xml配置文件: 2.@Bean 作用于方法上,相当于xml配置中的<bean>: 2.示例 该示例演示了通过Java配置的方式进行配置Spring,并且实现了Spring IO

spring的Java配置入门(Spring Boot学习之一)

spring的Java配置 1.创建maven项目 使用idea创建maven项目,这里顺便提一下,idea真的比eclipse好用,早点熟悉吧.然后就是maven是java项目管理最主流的工具,自己先配置一个试试,很好上手. 2.导入依赖 编辑pom文件 1.首先配置一下jdk版本和编码,两种方式,按道理任意一种都可以,出问题的话两种都加上吧,如下 <build>        <finalName>spring-learn</finalName>        &l

Spring AOP 不同配置方式产生的冲突问题

Spring AOP的原理是 JDK 动态代理和CGLIB字节码增强技术,前者需要被代理类实现相应接口,也只有接口中的方法可以被JDK动态代理技术所处理:后者实际上是生成一个子类,来覆盖被代理类,那么父类的final方法就不能代理,因为父类的final方法不能被子类所覆盖.一般而言Spring默认优先使用JDK动态代理技术,只有在被代理类没有实现接口时,才会选择使用CGLIB技术来实现AOP. 但是也提供了配置参数来强制选择使用 CGLIB 技术,如下: <aop:config proxy-ta

Java配置方式读取外部的资源配置文件

通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法: package cn.qlq; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.

Spring有哪些配置方式

1.XML 配置文件. Bean 所需的依赖项和服务在 XML 格式的配置文件中指定.这些配置文件通常包含许多 bean 定义和特定于应用程序的配置选项.它们通常以 bean 标签开头.例如: <bean id="studentBean" class="org.edureka.firstSpring.StudentBean"> <property name="name" value="Edureka">

Spring MVC Controller配置方式

在SpringMVC中,对于Controller的配置方式有很多种,如下做简单总结 第一种 URL对应Bean 如果要使用此类配置方式,需要在XML中做如下样式配置 <!-- 表示将请求的URL和Bean名字映射-->   <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>   <bean name="/hello.do" c

常用的两种spring、mybatis 配置方式

在之前的文章中总结了三种方式,但是有两种是注解sql的,这种方式比较混乱所以大家不怎么使用,下面总结一下常用的两种总结方式: 一. 动态代理实现 不用写dao的实现类 这种方式比较简单,不用实现dao层,只需要定义接口就可以了,这里只是为了记录配置文件所以程序写的很简单: 1.整体结构图: 2.三个配置文件以及一个映射文件 (1).程序入口以及前端控制器配置 web.xml <?xml version="1.0" encoding="UTF-8"?> &

Spring注解和配置方式

Spring提供了一个org.springframework.beans.factory.FactoryBean工厂类接口,用户可以通过实现该接口定制实例化Bean的逻辑. 从Spring3.0开始,FactoryBean开始支持泛型,即接口声明改为FactoryBean<T>的形式,在该接口中共定义了以下3种方法: T getObject():返回由FactoryBean创建的Bean的实例,若isSingleton()返回的是true,则该实例会放到Spring容器的单实例缓存池中 boo

spring多数据源配置方式

1.单数据源配置方式 <bean name="zhyDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver&q