spring的相关知识,包括spring的相关注解

46 阅读1分钟

Spring

Spring内部默认整合Mybatis,直接导入依赖即可

spring相关依赖

    <dependencies>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <!--spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.16</version>
        </dependency>
        <!--spring-jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.16</version>
        </dependency>
        <!--spring-mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>
        <!--测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.16</version>
        </dependency>
    </dependencies>

配置类

@ComponentScan("com.itheima") // @ComponentScan 注解扫描范围
public class SpringConfig {
​
    // 1. 配置数据库连接池对象
    @Bean
    public DruidDataSource dataSource(){
        // 创建DruidDataSource对象
        DruidDataSource dataSource = new DruidDataSource();
​
        // 设置连接数据库的参数:driver(加载器)、路径、用户名、密码
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/spring");
        dataSource.setUsername("root");
        dataSource.setPassword("1234");
        return dataSource;
    }
​
    // 2. 配置mapper映射对象
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer configurer = new MapperScannerConfigurer();
        configurer.setBasePackage("com.itheima.mapper"); // 设置接口所在包名
        return configurer;
    }
​
    // 3. 配置SqlSessionFactoryBean
    // @Bean标注的方法如果需要参数,Spring会在自己的容器中查找,自动注入
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DruidDataSource dataSource){
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        return factoryBean;
    }
}

Spring写测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class DeptMapperTest {
    @Autowired
    private DeptService deptService;
​
    @Test
    public void testFindAll() {
        // 3. 验证deptService是否拿到;验证deptService是否拿到DeptMapper对象
        List<Dept> deptList = deptService.findAll();
        deptList.forEach(dept -> System.out.println(dept));
    }
​
    @Test
    public void deleteByIdTest() {
        deptService.deleteById(1);
    }
​
    @Test
    public void insertDept() {
​
        Dept dept = new Dept();
        dept.setId(6);
        dept.setName("网管部");
        dept.setCreateTime(LocalDateTime.now());
        dept.setUpdateTime(LocalDateTime.now());
        deptService.insertDept(dept);
    }
​
    @Test
    public void updateDept(){
​
        Dept dept = new Dept();
        dept.setId(5);
        dept.setName("外交部");
        deptService.updateDept(dept);
    }
}

Spring注解

@Component @Controller @Service @Repository标注在自己开发的类上,用于将当前类对象放入Spring容器
@Bean标注在配置类中的方法上,用于将方法的返回值对象放入Spring容器
@Autowired标注在类中的属性上,用于从Spring容器中获取属性的值
@Qualifier @Primary依赖注入时,根据一个接口查到了多个对象,使用这两个注解确定使用哪个对象
@Scope标注在类上,声明对象是单例还是多例
@Configuration标注在配置类上,Spring容器启动时会自动加载类中的配置
@ComponentScan标注在主配置类上,用于声明包扫描的范围