<Spring>@Configuration @Import使用方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了<Spring>@Configuration @Import使用方式相关的知识,希望对你有一定的参考价值。

参考技术A Spring Bean Container

Spring在古老版本会用xml实现bean的注册,在新版本也可以使用@Service、@Repository、@Controller等基于@Component的注解注入bean。除此之外,3.x、4.x的Spring Framework支持以类的方式结合@Configuration @Bean注解注入bean,也慢慢成为一种趋势,相比xml而言类更好维护、分类和管理阅读。

下面看看具体使用:

@Configuration @Bean

如上图,打上@Configuration的类就成为了"配置类"的概念,每一个bean都会打上@Bean注解进行注入。

@Bean注解可以起别名,如果没有指定具体名称,便会取@Bean注解修饰的方法名,如图中的"serviceExecutor"。

@Import

import注解也是为了配置而存在的

如上图,个人认为主要流行的有以上两种用法,第一种是在注解上去import资源,和@Configuration区别不大。第二种是用import管理所有的@Configuration配置类,保证@Configuration本身是按照功能、业务、职责独立划分的。所以第二种用法Import参数可以填一组@Configuration修饰的Class对象。

MyBatis 基础

1.在src下创建一个myBatis.xml文件(名字随意)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- default:指默认使用id为defaultr的 environment配置
        一个environments下可以有多个environment-->
    <environments default="default">
        <environment id="default">
            <!-- 使用原生jdbc事务 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 使用数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
                <property name="username" value="root"/>
                <property name="password" value="admin"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 读取mapper -->
    <mappers>
        <mapper resource="com/strong/mapper/FlowerMapper.xml"/>
    </mappers>
</configuration>

2.新建一个包com.strong.mapper,在包下创建FlowerMapper.xml文件(类名.mapper.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <!-- namespace:命名,可以随意取 -->
<mapper namespace="com.strong.mapper">
    <!-- resultType:实体类,要写类命名  id:命名 -->
    <select resultType="com.strong.pojo.Flower" id="selectAll">
        select * from flower    
    </select>
</mapper>

3.测试MyBatis

public class Test {
    public static void main(String[] args) throws IOException {
        //读取XML文件
        InputStream is=Resources.getResourceAsStream("myBatis.xml");
        //创建SqlSessionFactory工厂
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
        //生产一个SqlSession对象
        SqlSession session=factory.openSession();
        //读取数据库
        List<Flower> list=session.selectList("com.strong.mapper.selectAll");
        for(Flower flower:list) {
            System.out.println(flower);
        }
    }
}

 三种常查询方式:

1.

返回一个List对象,适用于查询需要遍历的结果

List<Flower> list=session.selectList("com.strong.mapper.selectAll");
        for(Flower flower:list) {
            System.out.println(flower);
        }
<select resultType="com.strong.pojo.Flower" id="selectAll">
        select * from flower    
</select>

 

2.

返回一个Object对象,适用于查询一条数据

        int count=session.selectOne("com.strong.mapper.selectOne");
        System.out.println(count);
<select resultType="int" id="selectOne">
        select count(*) from flower    
</select>

 

3.

返回一个map,适用于需要对查询结果再次筛选(通讯录)

        Map<Object,Object> map=session.selectMap("com.strong.mapper.selectMap", "name");//name为map的key
        System.out.println(map);
<select resultType="com.strong.pojo.Flower" id="selectMap">
        select * from flower    
</select>

 

以上是关于<Spring>@Configuration @Import使用方式的主要内容,如果未能解决你的问题,请参考以下文章

初学Spring Boot

mysql逆向工程(mybatis)

MyBatis 基础

maven 配置自动本地/线上不同配置自动打包

Spring Security 注销和最大会话数

maven项目打包 编码gbk的不可映射字符