Spring框架,核心IOC,使用注解

基于注解创建对象有四个:

@Component:修饰类
@Repository:修饰类,应用于持久层
@Service:修饰类,应用于业务层
@Controller:修饰类,应用于控制层
作用:可以将对象创建并且加入到IOC容器中
代替:<bean class="类全名字符串"/>
value:可以给对象取名字,默认名是首字母小写的类名
警告:使用了任何IOC注解必须在配置文件中添加注解支持,语句为:<context:component-scan base-package="指定使用注解的包路径, 可以使用,号分隔"/>

依赖注入的注解:前提:对象必须交给IOC容器管理
依赖注入常用注解:

注解名说明
@Value位置: 属性, 方法, 参数
作用: 注入配置文件的参数 或 基本数据类型数据
@Autowired位置: 属性, 方法, 参数
作用: 根据对象(类型+名称)注入属性值
意义: 代替bean标签中的子标签property
required: 注入的对象是否必须 (true: 非空)
@Qualified位置: 属性, 方法, 类
作用: 只根据对象名称注入,value: 注入指定名称的对象
一般配合@Autowired使用
@Resource位置: 属性, 方法, 类
相当于@Autowired+@Qualifier
警告:JDK1.8以后不支

生命周期的相关注解:

@PostConstruct: 修饰方法,方法在构造方法之后执行
@PreDestroy: 修饰方法,方法在容器关闭之前执行
@Lazy: 修饰类,设置对象创建的时间,true:延迟到使用时创建,默认值,false:容器启动时创建
@Scope: 修饰类,设置类的对象是多例还是单例。prototype:多例  singleton:单例 默认值

纯注解开发
纯注解也可以理解为零配置。
改造目标:去除所有的配置文件。
核心思想:找到相应的注解 代替 配置文件已经配置文件中的配置项。
使用注解代替配置文件的相关剩余注解:前提:创建一个类来代替配置文件

1.配置文件的替代注解:@Configuration 作用:修饰类,将类设置Spring配置类,代替applicationContext.xml文件
2.注解扫描配置的替代注解:@ComponentScan 作用:修饰类,指定扫描的包路径
3.加载配置文件的替代注解:@PropertySource 作用:修饰类,导入外部的配置文件,类似与以.properties为命名的配置文件
4.导入配置文件的替代注解:@Import 修饰类,导入其它Spring配置类
5.第三方对象创建的替代注解:@Bean 修饰方法,将方法返回的返回值添加到IOC容器中 细节:当方法使用@Bean之后,参数列表中的对象将会从容器中获取

Spring整合Junit框架:
Junit单元测试的问题:每次测试都需要手动创建IOC容器
例子:


/**
 * 测试CRUD工程的代码.
 *  当前相当于是模拟视图层/控制层
 *  @RunWith: 修饰类
 *      作用: 指定启动器
 *  @ContextConfiguration: 修饰类
 *      作用: 配合@RunWith使用指定一个创建容器的配置(包含配置类和配置文件)
 */
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration(locations = "classpath:applicationContext.xml")
@ContextConfiguration(classes = SpringConfig.class)
public class SpringTests {
    @Autowired
    AccountServiceImpl accountService;

    @Test
    public void testSave (){
        Account account = new Account();
        account.setId(10);
        account.setUid(10);
        account.setMoney(10D);
        accountService.save(account);
    }

    @Test
    public void testDel (){
        Account account = new Account();
        account.setId(10);
        account.setUid(10);
        account.setMoney(10D);
        accountService.del(account);
    }

    @Test
    public void testUpdate (){
        Account account = new Account();
        account.setId(10);
        account.setUid(10);
        account.setMoney(11D);
        accountService.update(account);
    }

    @Test
    public void testFindById (){
        Account account = new Account();
        account.setId(10);
        Account acc = accountService.findById(account);
        System.out.println(acc);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值