zoukankan      html  css  js  c++  java
  • spring(一)Spring的java配置方式

    1. Spring的发展

    1.1. Spring1.x 时代

    Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。

    1.2. Spring2.x时代

    随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。

    那么,问题来了,究竟是应该使用xml还是注解呢?

    最佳实践:

    1、 应用的基本配置用xml,比如:数据源、资源文件等;

    2、 业务开发用注解,比如:Service中注入bean等;

    1.3. Spring3.xSpring4.x

    Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.xSpring boot都推荐使用java配置的方式。

    2. SpringJava配置方式

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

    2.1. @Configuration @Bean

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

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

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

    2.2. 示例

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

    2.2.1. 创建工程以及导入依赖

    <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.itcast.springboot</groupId>

    <artifactId>itcast-springboot</artifactId>

    <version>1.0.0-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.2. 编写User对象

    public class User {

        private String username;

        private String password;

        private Integer 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 Integer getAge() {

            return age;

        }

        public void setAge(Integer age) {

            this.age = age;

        }

    }

    2.2.3. 编写UserDAO 用于模拟与数据库的交互

    public class UserDAO {

        

        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.2.4. 编写UserService 用于实现User数据操作业务逻辑

    @Service

    public class UserService {

        @Autowired // 注入Spring容器中的bean对象

        private UserDAO userDAO;

        public List<User> queryUserList() {

            // 调用userDAO中的方法进行查询

            return this.userDAO.queryUserList();

        }

    }

    2.2.5. 编写SpringConfig 用于实例化Spring容器

    @Configuration //通过该注解来表明该类是一个Spring的配置,相当于一个xml文件

    @ComponentScan(basePackages = "cn.itcast.springboot.javaconfig") //配置扫描包

    public class SpringConfig {

        

        @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>

        public UserDAO getUserDAO(){

            return new UserDAO(); // 直接new对象做演示

        }

        

    }

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

    public class Main {

        

        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();

        }

    }

    2.2.7. 测试效果

     

    2.2.8. 小结

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

    本人开发小白,所写随笔有转发、有心得、随笔、所见问题、或者感觉不错的东西,希望能帮助他人,同时也相当给自己方便!(未来及标明出处,望原作者以及读者见谅海涵!一切为了能解决问题。。。。)
  • 相关阅读:
    JavaScript高级程序设计学习笔记事件(一)(事件流、事件处理程序/事件侦听器)
    JavaScript高级程序设计学习笔记事件(二)(事件对象DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象)
    闭包学习小记
    JavaScript高级程序设计学习笔记DOM(一)(节点层次Node类型节点关系/操作节点)
    打印网页内容
    尝试写第一个js插件 图片轮播
    JavaScript高级程序设计学习笔记面向对象的程序设计(一) 创建对象 (工厂模式、构造函数模式、原型模式等)
    jQuery二维码插件 jquery.qrcode.js
    ajax请求地址后加随机数防止浏览器缓存
    location.href 和document.referrer、event.keyCode、setTimeout 与setInterval、前置与后置型递增递减操作符
  • 原文地址:https://www.cnblogs.com/chengjiao/p/9633293.html
Copyright © 2011-2022 走看看