栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM——Spring注解开发

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM——Spring注解开发

文章目录

一. Spring原始注解

1. @Repository2. @Service3. @Value4. @Scope5. @PostConstruct、@PreDestroy 二. Spring新注解

1. @Configuration、@ComponentScan、@import2. @PropertySource、@Value3. @Bean 三. Spring集成Junit

1. 原始Junit测试Spring的问题2. Spring集成Junit步骤

2.1 导入spring集成Junit的坐标2.2 使用@Runwith注解替换原来的运行期2.3 使用@ContextConfiguration指定配置文件或配置类2.4 使用@Autowired注入需要测试的对象2.5 创建测试方法进行测试 一. Spring原始注解

Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。

注意:
使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法。


1. @Repository
//替换 

//@Component("userDao")
@Repository("userDao")  //功能和Component一样,但可读性强

//括号里面的字符串,代表bean中的id字段名

2. @Service
//

//@Component("userService")
@Service("userService")

//括号里面的字符串,代表bean中的id字段名


//以下两句话替换bean的注入:
//@Autowired //只写Autowired,spring会按照数据类型从Spring容器中进行匹配的(只适合该类型有一个bean)

//@Qualifier("userDao")  //是按照id值(括号里面的值)从容器中进行匹配的 但是主要此处@Qualifier结合@Autowired一起使用,这样就是按照名称进行注入

@Resource(name="userDao") //@Resource相当于@Qualifier+@Autowired

注意:使用注解的方式,set方法可以省略,spring通过反射机制

3. @Value

4. @Scope

5. @PostConstruct、@PreDestroy

二. Spring新注解

使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下:

1. @Configuration、@ComponentScan、@import

//标志该类是Spring的核心配置类
@Configuration

//替换:
@ComponentScan("com.itheima")


@Bean("dataSource")  //Spring会将当前方法的返回值以指定名称存储到Spring容器中
   public DataSource getDataSource() throws PropertyVetoException {
       ComboPooledDataSource dataSource = new ComboPooledDataSource();
       dataSource.setDriverClass(driver);
       dataSource.setJdbcUrl(url);
       dataSource.setUser(username);
       dataSource.setPassword(password);
       return dataSource;
   }


//替换:
@import({DataSourceConfiguration.class}) //这地方是数组,通过逗号隔开
public class SpringCofiguration {

}

public static void main(String[] args) {

        //ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //通过注解进行加载配置文件
        ApplicationContext app = new AnnotationConfigApplicationContext(SpringCofiguration.class);
        UserService userService = app.getBean(UserService.class);
        userService.save();
    }
2. @PropertySource、@Value
//替换:
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {

    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean("dataSource")  //Spring会将当前方法的返回值以指定名称存储到Spring容器中
    public DataSource getDataSource() throws PropertyVetoException {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

3. @Bean
	@Bean("dataSource")  //Spring会将当前方法的返回值以指定名称存储到Spring容器中
    public DataSource getDataSource() throws PropertyVetoException {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(username);
        dataSource.setPassword(password);
        return dataSource;
    }


三. Spring集成Junit 1. 原始Junit测试Spring的问题

//ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
//通过注解进行加载配置文件
ApplicationContext app = new AnnotationConfigApplicationContext(SpringCofiguration.class);
UserService userService = app.getBean(UserService.class);
userService.save();

上述问题解决思路

让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉它将需要进行测试Bean直接在测试类中进行注入 2. Spring集成Junit步骤

2.1 导入spring集成Junit的坐标

	org.springframework
	spring-test
	5.0.2.RELEASE


	junit
	junit
	4.12
	test
 
2.2 使用@Runwith注解替换原来的运行期 

package com.itheima.test;

import com.itheima.cofig.SpringCofiguration;
import com.itheima.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.sql.DataSource;
import java.sql.SQLException;

@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml") 加载配置文件
@ContextConfiguration(classes = {SpringCofiguration.class})
public class SpringJunitTest {

    @Autowired
    private UserService userService;

    @Autowired
    private DataSource dataSource;

    @Test
    public void test1() throws SQLException {
        userService.save();
        System.out.println(dataSource.getConnection());
    }

}
2.3 使用@ContextConfiguration指定配置文件或配置类

2.4 使用@Autowired注入需要测试的对象

2.5 创建测试方法进行测试

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号