spring 注解

开启注解驱动

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启注解驱动-->
    <context:component-scan base-package="com.asaawan"/>
</beans>

整合第三方技术

JdbcConfiguration 配置

public class JdbcConfiguration  {
    @Value("${jdbc.driverClass}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean("dataSource")
    public DataSource createDataSource(){
        System.out.println(driverClassName);
        DruidDataSource source = new DruidDataSource();
        source.setDriverClassName(driverClassName);
        source.setUrl(url);
        source.setUsername(username);
        source.setPassword(password);
        return source;
    }
}

MyBatisConfiguration 配置

public class MyBatisConfiguration {
    @Bean
    public SqlSessionFactoryBean getSqlSessionFactoryBean(@Autowired DataSource dataSource) {
        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
        ssfb.setDataSource(dataSource);
        ssfb.setTypeAliasesPackage("com.asaawan.domain");
        return ssfb;
    }

    @Bean
    public MapperScannerConfigurer getMapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.asaawan.mapper");
        return msc;
    }
}

SpringConfiguration 配置

@Configuration
@ComponentScan("com.asaawan")
@PropertySource(value = {"classpath:jdbc.properties"},ignoreResourceNotFound = true)
@Import({JdbcConfiguration.class, MyBatisConfiguration.class})
public class SpringConfiguration {
}

测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfiguration.class)
public class AccountServiceTest {
    @Autowired
    private AccountService service;

    @Test
    public void testFindAll(){
        Account account = service.findById(1);
        System.out.println(account.getUserName());
        Assert.assertEquals("zsf",account.getUserName());
    }
}

业务使用

public class App {
    public static void main(String[] args) {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
        AccountService service = (AccountService) ctx.getBean("accountService");
        List<Account> accounts = service.findAll();
        accounts.forEach(System.out::println);
    }
}

bean 常用注解

声明一个bean可以使用哪些注解?

  • @Component
  • @Controller
  • @Service
  • @Repository

定义bean的作用域使用哪个注解?

  • @Scope
    • singleton
    • prototype

使用哪个注解配置第三方资源?

  • @Bean

注入非引用数据类型使用哪个注解?

  • @Value

注入引用数据类型可以使用哪个注解并且它们的特点是啥?

  • @Autowired
    • @Autowired 默认按类型装配,指定 @Qualifier 后可以指定自动装配的 bean 的 id
  • @Resource
    • 按照名称进行注入

通过那个注解来加载外部的属性文件?

  • @PropertySource

@Configuration注解有什么作用?

  • 声明某一个类是一个配置类

@ComponentScan注解有什么作用?

  • 声明Spring所扫描的的bean所在的包

@Import注解的作用是什么?

  • 导入一个配置类
posted @ 2021-06-17 20:21  山奈  阅读(53)  评论(0)    收藏  举报