美文网首页
2018-03-03-0.spring深入学习一

2018-03-03-0.spring深入学习一

作者: 简单coder | 来源:发表于2018-03-03 15:16 被阅读25次

学习spring的过程中,我发现我对spring的认识还是只停留在2.x时代,并没有多少用java配置的方式去配置读取配置文件,而是一股脑的用xml,这种方法并不是spring想要推崇的,这里记录一下java方式配置spring配置文件:

1Spring的发展

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.x到Spring4.x

从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Spring boot都推荐使用java配置的方式。
3.Spring的Java配置方式
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。
3.1.@Configuration 和 @Bean
Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的:
1、@Configuration 作用于类上,相当于一个xml配置文件;
2、@Bean 作用于方法上,相当于xml配置中的<bean>;

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.1. 编写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;

    }

}

1.1.2. 编写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;

    }

}

1.1.3. 编写UserService****用于实现User数据操作业务逻辑


@Service

**public** **class** UserService {

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

    **private**UserDAO userDAO;

    **public** List<User> queryUserList() {

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

        **return** **this**.userDAO.queryUserList();

    }

}

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


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

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

**public** **class** SpringConfig {

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

    **public** UserDAO getUserDAO(){

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

    }

}

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

**public** **class** Main {

    **public** **static** **void**main(String[] args) {

        // 通过Java配置来实例化Spring容器

AnnotationConfigApplicationContext <u>context</u>= **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();

    }

}

1.1.6. 测试效果

1.1.7. 小结

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

相关文章

  • 2018-03-03-0.spring深入学习一

    学习spring的过程中,我发现我对spring的认识还是只停留在2.x时代,并没有多少用java配置的方式去配置...

  • hbase资料收集

    一、HBase 0.94.1 block-cache 理解 二、HBase深入学习(1) 三、HBase深入学习(...

  • 关于如何继续深入学习C语言

    关于如何继续深入学习C语言,是这样的,首先这不是一个局限的问题我认为,因为不论深入学习一门语言也好,还是深入学习一...

  • Python学习之深入(一)

    姓名:何承勇 学号:16050510005 转载自:http://www.cnblogs.com/vamei/ar...

  • 深入学习RunLoop(一)

    简述 什么是RunLoop?顾名思义RunLoop是一个运行循环,它的作用是使得程序在运行之后不会马上退出,保持运...

  • 学习需要深入

    总结自己的学习,发现太过肤浅,流于表面,思考的较少,也缺乏深入的研究,结果是没有一个方面有所建树。我想可能...

  • 深入学习

    对于一个有早起写作习惯的人,如果早上一起床,就不知道该写什么,那就说明一件事,前一天没有深入的去学习。 想想吧!刚...

  • 学习深入思考

    转眼上了一年的班了,感叹时间过得赶快。回想过去这一年里收获也不少,发现习惯和思维方式的欠缺,语言的欠缺,也就是沟通...

  • 深入学习

    基本一晚没有入睡,早餐后接着说工作方案。 好在直到中午我根据往年的计划数据,统看全年任务及分配,算是明白了自己日后...

  • 深入学习

    读《降伏其心》(一)心得25 只有要让身心统一、协调、宁静、沉浸其中,才能学有所得。 礼佛时要右手按在蒲团中间,左...

网友评论

      本文标题:2018-03-03-0.spring深入学习一

      本文链接:https://www.haomeiwen.com/subject/siwtfftx.html