这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情
前言
大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要带大家了解Spring的快速入门以及一些常用注解的使用。
1. Spring快速入门
- 通过maven仓库导jar包。
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
- 创建对应的dao接口和实现类
public interface UserDao {
public void test();
}
public class UserDaoImpl implements UserDao {
@Override
public void test() {
System.out.println("testing ......");
}
}
- 创建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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置bean-->
<!--id 唯一标识 class是bean的全限定名,该类中需要有无参构造-->
<bean id="test" class="org.poison.dao.impl.UserDaoImpl"></bean>
</beans>
- 获取Bean实例
//获取配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//根据配置文件的id获取userDao对象
UserDao userDao = (UserDao) applicationContext.getBean("test");
//测试
userDao.test();
2. Spring配置文件详解
<!--配置bean-->
<!--id 唯一标识 class是bean的全限定名,该类中需要有无参构造-->
<bean id="test" class="org.poison.dao.impl.UserDaoImpl" scope="singleton" init-method="init" destory-method="destory"></bean>
scope | |
---|---|
singleton | 默认值,表明是单例对象 |
prototype | 多例对象 |
request | 将创建的Bean对象存到request域中 |
session | 将创建的Bean对象存到session域中 |
global session | 将创建的Bean对象存到globalSession域中 |
singleton创建对象在加载完配置文件之后就已经完成了,只要容器在对象就一直存在,prototype创建对象需要得到Bean时才完成,只要对象不被垃圾回收就一直存在。
init-method | Bean对象初始化时的方法 |
---|---|
destroy-method | Bean对象销毁时的方法 |
3.Spring原始注解
- 创建Bean实例
@Component("userDao")//创建bean实例
//相当于
<bean id="userDao" class="org.poison.dao.impl.UserDaoImpl"></bean>
@Controller 在web层创建Bean实例
@Service 在service层创建Bean实例
@Repository 在Dao层创建Bean实例
与@Component具有相同功能,只不过更加语义化
- 依赖注入
//注入对象
@Autowired //按照类型从spring容器中自动匹配
@Qualifier("userDao") //按照id匹配,需要结合@Autowired一起使用。
@Resource(name="userDao")//相当于@Autowired和@Qualifier一起使用
//注入普通数据类型
@Value()
//多使用
@Value("${}")
- 单例和多例
@Scope("Singleton")
@Scope("prototype")
- 初始方法和销毁方法
@PostConstruct
public void init(){
System.out.println("init......");
}
@PreDestroy
public void destroy(){
System.out.println("destroy.......");
}
4. 新注解
@Configuration //表明该类是spring核心配置类
@ComponentScan("org.opison") //组件扫描
@Import({DataSourceConfiguration.class})//导入其他配置类
@PropertySource("classpath:jdbc.properties") //导入配置文件
@Bean("id") //将当前方法的返回值作为bean存放到spring容器
@Configuration //表示该类是spring的配置类
@ComponentScan("org.poison") //组件扫描
@Import({DataSourceConfiguration.class})
public class SpringConfiguration {
}
@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;
//将当前方法的返回值以指定名称存到spring容器中
@Bean("dataSource")
public DataSource getDataSource() throws PropertyVetoException {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driver);
dataSource.setJdbcUrl(url);
dataSource.setUser(username);
dataSource.setPassword(password);
return dataSource;
}
}
public class UserController {
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class);
UserService userService = (UserService) applicationContext.getBean("userService");
userService.save();
((AnnotationConfigApplicationContext)applicationContext).close();
}
}
小结
以上就是Spring的快速入门以及一些常用注解的使用,希望能对读者有所帮助。如有不正之处,欢迎留言指正。