Spring快速入门

61 阅读2分钟

这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

前言

大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要带大家了解Spring的快速入门以及一些常用注解的使用。

1. Spring快速入门

  1. 通过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>
  1. 创建对应的dao接口和实现类
public interface UserDao {
    public void test();
}
public class UserDaoImpl implements UserDao {
    @Override
    public void test() {
        System.out.println("testing ......");
    }
}
  1. 创建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>
  1. 获取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-methodBean对象初始化时的方法
destroy-methodBean对象销毁时的方法

3.Spring原始注解

  1. 创建Bean实例

@Component("userDao")//创建bean实例

//相当于

<bean id="userDao" class="org.poison.dao.impl.UserDaoImpl"></bean>

@Controller 在web层创建Bean实例

@Service 在service层创建Bean实例

@Repository 在Dao层创建Bean实例

与@Component具有相同功能,只不过更加语义化

  1. 依赖注入

//注入对象

@Autowired //按照类型从spring容器中自动匹配

@Qualifier("userDao") //按照id匹配,需要结合@Autowired一起使用。

@Resource(name="userDao")//相当于@Autowired和@Qualifier一起使用

//注入普通数据类型

@Value()

//多使用

@Value("${}")

  1. 单例和多例

@Scope("Singleton")

@Scope("prototype")

  1. 初始方法和销毁方法
@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的快速入门以及一些常用注解的使用,希望能对读者有所帮助。如有不正之处,欢迎留言指正。