第六节——spring注解开发
Posted 想学习安全的小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六节——spring注解开发相关的知识,希望对你有一定的参考价值。
一、spring原始注解
- 要求:在B中使用A的类,且在Deom01中的main方法里创建B对象,执行B的test方法
- 创建A类
public class A {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "A{" +
"name='" + name + '\\'' +
", age=" + age +
'}';
}
}
- 创建B类
public class B {
private A a_impl;
public void setA_impl(A a_impl) {
this.a_impl = a_impl;
}
public void test(){
System.out.println(a_impl);
}
}
-
使用@Component注解代替Bean在spring中配置A类
-
使用@Component配置B类,使用@Autowired(类似name标签)和@Qualifier(“a”)(类似ref标签)代替配置注入
-
在applicationContext.xml文件中配置注解,需要使用context命名空间,其中A,B,Main.class文件都在test01目录里,这个配置名称叫:组件扫描
<context:component-scan base-package="test01"/>
二、原始注解——细化注解
- @Controller:在web层创建bean
- @Service:在server层创建bean
- @Repository:在dao层创建bean
- 使用@Autowired+@Qualifier(“a”)代替xml进行注入时,set方法可以不写
- @Resource(name="")=@Autowired+@Qualifier
- @Value:进行普通数据类型注入,配合@Value("${jdbc.drive}")可以引入配置文件中的值
三、新注解
-
创建一个config目录,里面创建一个SpringConfig.java类文件用于代替applicationContext
-
将注解@Configuration添加到类名前面,表明这个类是spring的核心配置文件
-
使用注解@ComponentScan,将组件扫描配置进去
-
使用注解@Bean,获取外部的对象,将获取dataSource的配置移植过来
@Bean("dataSource")
public DataSource getDataSource() {
//创建druid对象
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("970725");
return dataSource;
}
- 使用注解@PropertySource(“classpath:jdbc.properties”)引入配置文件,使用@Value注释获取配置文件的内容
@Configuration
@ComponentScan("test01")
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
@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")
public DataSource getDataSource() {
//创建druid对象
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
- 将数据源配置一直到DataSourceConfig.class文件中,再通过import引入
//DataSourceConfig.class
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig {
@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")
public DataSource getDataSource() {
//创建druid对象
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
//SpringConfig.class
@Configuration
@ComponentScan("test01")
@Import(DataSourceConfig.class)
public class SpringConfig {
}
//引入多个
@Configuration
@ComponentScan("test01")
@Import({DataSourceConfig.class,XXX})//可以通过数组方式引入多个
public class SpringConfig {
}
- 在main函数中使用SpringConfig文件
ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfig.class);
四、使用Spring-junit进行测试开发
- 导入junit和spring-test坐标
<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.10</version>
</dependency>
- 在test-java目录下创建一个SpringJunitTest类来进行测试
- 使用注解@RunWith(SpringJUnit4ClassRunner.class)用于测试
- 在test-resources目录下创建applicationContext
- 使用注解@ContextConfiguration(“classpath:applicationContext.xml”)指定配置文件
- 使用@Value进行注入,使用@Test测试注入
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringJunitTest {
@Value("qwe")
private String name;
@Test
public void test01(){
System.out.println(name);
}
}
- 创建SpringConfig.class配置类,使用注解@ContextConfiguration(classes = {SpringConfig.class})
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration(classes = {SpringConfig.class})
public class SpringJunitTest {
@Value("qwe")
private String name;
@Test
public void test01(){
System.out.println(name);
}
}
以上是关于第六节——spring注解开发的主要内容,如果未能解决你的问题,请参考以下文章
Web前端开发笔记——第二章 HTML语言 第六节 区域标签列表标签