Spring入门-新建最简单的项目

学Android时间久了,很自然地会遇到瓶颈。
而了解下其他技术,不仅可以拓宽视野,也可以反哺Android技术的成长。
故在此开辟Android开发者学JavaWeb系列,以一个Android开发者的角度,来学习JavaEE。

Spring是什么

Spring是JavaEE的一个框架,因为JavaEE诞生年数悠久,在框架层面显得成熟,更规范化。而Android领域常年框架处于百家争鸣时代,直到最近Google JetPack的发布,框架才有了统一的曙光。故Spring的框架思想,对于Android而言,是很有借鉴意义的。
Spring以IoC和AOP为内核,提供了展现层SpringMVC持久层Spring JDBCTemplate以及业务层事物管理等众多的企业级应用技术,并整合了开源世界众多著名的第三方框架和类库,才逐渐成为使用最多的Java EE企业应用开源框架。
Spring的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。它的源代码无疑是Java技术的最佳实践的范例。

Spring的优势
1.方便解耦,简化开发

通过Spring提供的Ioc容器,可以将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的过度耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

2.AOP编程的支持

通过Spring的AOP功能,方便进行面向切面编程,许多不容易用传统OOP实现的功能可以通过AOP轻松实现。

AOP是一种思想,Spring是对这种思想进行实现

3.声明式事物的支持

可以将我们从单调阀闷的事务管理代码中解脱出来,通过声明式方式灵活进行事物管理,提高开发效率和质量。

4.方便集成各种优秀的框架

比如Struts、Hibernate、Hessian、Quartz等

5.降低 JavaEE API的使用难度

Spring对JavaEE API (如JDBC、JavaMail、远程调用等)进行了封装,是这些API的使用难度大为降低。

新建Spring项目 (通过Xml依赖注入)

配置环境

首先,我们需要先下载开发软件,以及进行环境配置,详见如下

IDEA下载地址:http://www.xue51.com/soft/37767.html
maven配置 https://blog.csdn.net/qq_32588349/article/details/51461182

在这里插入图片描述
在这里插入图片描述
在pom.xml中添加如下配置

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.5.RELEASE</version>
    </dependency>
</dependencies>

接着,我们就可以来编写程序了。

首先我们来创建一个UserDao接口

public interface UserDao {
    public void save();
}

接着,创建其实现类UserDaoImpl

public class UserDaoImpl implements UserDao {
    public void save() {
        System.out.println("save running...");
    }
}

接着,来创建UserService接口

public interface UserService {
    void save();
}

创建其实现类UserServiceImpl

public class UserServiceImpl implements UserService {
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save() {
        userDao.save();
    }
}

接着,在resources文件夹下创建applicationContext.xml,这个名称可以随意,一般为applicationContext
xml中,对userDao和userService进行配置。

<?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="userDao" class="com.heiko.dao.impl.UserDaoImpl"></bean>

    <bean id="userService" class="com.heiko.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"/>
    </bean>
</beans>

最后,我们来运行程序测试一下

public static void main(String[] args) {
    ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
    //UserServiceImpl userService = app.getBean(UserServiceImpl.class);
    UserServiceImpl userService = (UserServiceImpl) app.getBean("userService");
    userService.save();
}

可以看到打印了日志

save running...

新建Spring项目 (通过注解依赖注入)

首先配置applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--配置组件扫描-->
    <!--使用注解进行开发时,需要在ApplicationContext.xml中配置组件扫描,
    作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法-->
    <context:component-scan base-package="com.heiko"></context:component-scan>
</beans>
新建UserDao接口以及其实现类UserDaoImpl
public interface UserDao {
    public void save();
}

@Repository("userDao")
public class UserDaoImpl implements UserDao {
    public void save() {
        System.out.println("save running...");
    }
}
新建UserService接口以及其实现类UserServiceImpl
public interface UserService {
    void save();
}

@Service("userService")
@Scope("prototype")
//@Scope("singleton")
public class UserServiceImpl implements UserService {
    @Autowired //按照数据类型 从Spring容器中进行匹配
    //@Qualifier("userDao") //是按照id值从容器中进行匹配的,但是此处要结合@Autowired一起用
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save() {
        userDao.save();
    }
}
增加配置文件SpringConfiguration
@Configuration
@ComponentScan("com.heiko") //扫描的包
public class SpringConfiguration {
}

最后,来测试下程序

public static void main(String[] args) {
    ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfiguration.class);
    //UserServiceImpl userService = app.getBean(UserServiceImpl.class);
    UserServiceImpl userService = (UserServiceImpl) app.getBean("userService");
    userService.save();
}

可以看到打印了日志

save running...

其他

文中代码:详见https://github.com/EthanCo/SpringTest

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值