SpringBoot框架

SpringBoot-第一天

1.学习目标

1.Spring框架发展史

2.Spring5.x应用零配置开发

3.SpringMVC应用零配置开发与部署

4.SpringBoot框架概念,优势与快速入门

5.SpringBoot核心配置

6.Freemarker & Thymeleaf模板集成

7.SpringBoot静态资源文件添加与访问

8.SpringBoot应用打包与部署

2.Spring框架的发展史

2.1. Spring1.x 时代

在 Spring1.x 时代,都是通过 xml ⽂件配置 bean,随着项⽬的不断扩⼤,需要将 xml 配置分放到不同 的配置⽂件中,需要频繁的在 java 类和 xml 配置⽂件中切换。

2.2. Spring2.x 时代

随着 JDK 1.5 带来的注解⽀持,Spring2.x 可以使⽤注解对Bean进⾏声明和注⼊,⼤⼤的减少了 xml 配 置⽂件,同时也⼤⼤简化了项⽬的开发。 那么,问题来了,究竟是应该使⽤ xml 还是注解呢? 最佳实践: 1. 应⽤的基本配置⽤ xml,⽐如:数据源、资源⽂件等; 2. 业务开发⽤注解,⽐如:Service 中注⼊ bean 等;

2.3. Spring3.x 到 Spring4.x 再到 Spring5.x

从 Spring3.x 开始提供了 Java 配置⽅式,使⽤ Java 配置⽅式可以更好的理解你配置的 Bean,现在我 们就处于这个时代,并且 Spring4.x、Spring5.x 和 Spring Boot 都推荐使⽤ java 配置的⽅式。

3.Spring 5.X 应⽤零配置开发

Spring 框架从 5.x 版本推荐使⽤注解形式来对 java 应⽤程序进⾏开发与配置,并且可以完全替代原始 的 XML + 注解形式的开发,在使⽤注解形式进⾏项⽬开发与环境配置时,Spring 框架提供了针对环境配 置与业务 bean 开发相关注解。

3.1注解

3.1.1声明Bean注解

@Component: 组件 没有明确规定其角色,作用在类级别上声明当前类为一个组件,被Spring Ioc容器维护
@Service: 在业务逻辑层(Service层)类级别进行声明
@Repository:在数据访问层(dao层)类级别声明
@Controller: 在展现层(MVC)使用 标注当前类为一个控制器

3.1.2注入Bean注解

@AutoWried: Spring官方提供注解
@Inject: JSR-330 提供注解(标准制定方)
@Resource: JSR-250 提供注解

以上三种注解在 Set ⽅法或属性上声明,⼀般情况下通⽤⼀般开发中更习惯声明在属性上,代码简洁 清晰。基于5.x 注解配置⽅式简化了xml 配置,应⽤程序开发与xml 环境配置均通过相应注解来实现。

3.1.3.Spring5.x中配置与获取Bean注解

@Configuration: 作用与类上,将当前类声明为一个配置类,相当于一个xml配置文件
@ComponentScan: 自动扫描指定包下标注有@Repository,@Service,@Controller
@Component: 注解的类并由Ioc容器进行实例化和维护
@Bean: 作用于方法上,相当于xml文件中<bean>声明当前方法返回值为一个bean
@Value: 获取property文件指定key value值

3.2.实例1-IOC中Bean的实例化与获取

3.2.1.创建Spring普通工程

在pom.xml中添加坐标相关配置

<dependencies>
<!-- spring的依赖坐标 -->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>5.2.4.RELEASE</version>
 </dependency>
</dependencies>
<build>
 <plugins>
 <!-- 指定Maven编译的JDK版本和编码 -->
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>2.3.2</version>
 <configuration>
 <!-- 源代码使⽤的JDK版本 -->
 <source>1.8</source>
 <!-- 需要⽣成的⽬标class⽂件的编译版本 -->
 <target>1.8</target>
 <!-- 字符集编码 -->
 <encoding>utf-8</encoding>
 </configuration>
 </plugin>
 </plugins>
</build>

3.2.2.创建Bean对象

UserDao.java

@Repository
public class UserDao{
   
    public void test(){
   
        System.out.println("UserDao.test...");
    }
}

UserService.java

@Service
public class UserService{
   
    @Resource
    private UserDao userdao;
    
    public void test(){
   
        System.out.println("UserService.test...");
        userDao.test();
    }
}

3.2.3.创建IocConfig配置类

//当前类声明为一个配置类
@Configuration
//设置扫描包范围
@ComponentScan("com.xxx.springboot")
public class IocConfig{
   }

3.2.4创建启动类执行测试

public class Starter{
   
    public static void main(String[] args){
   
        //基于Java的配置类加载Spring的应用上下文
        AnnotationConfigApplicationContext ac = new
 AnnotationConfigApplicationContext(IocConfig.class);
        //获取指定的Bean对象
        UserService userService = ac.getBean(UserService.class);
        //调用Bean对象的方法
        userService.test();
    }
}

此时启动SpringIOC容器,通过实例化 AnnotationConfigApplicationContext类,接受配置参数类IocConfig,并获取UserService Bean实现方法调用,此时应用环境不存在xml配置文件,简化了应用的xml配置.

3.3.实例2-@Bean注解使用

使用@Bean注解声明在方法(注意:方法名一般为bean对象)

3.3.1.创建Bean对象

AccountDao.java

//注意:此时类级别并未添加@Repository注解
public class AccountDao{
   
    public void test(){
   
        System.out.println("AccountDao.test...");
    }
}

3.3.2修改IocConfig配置类

添加返回AccountDao Bean对象方法

@Configuration
@ComponentScan("com.xxxx.springboot")
public class IocConfig02{
   
    //返回实例化的单例Bean对象
    @Bean
    public AccountDao accountDao(){
   
        return new AccountDao();
    }
}

3.3.3创建启动类并执行测试

public class Starter02 {
   
 public static void main(String[] args) {
   
 AnnotationConfigApplicationContext ac = new
AnnotationConfigApplicationContext(IocConfig.class);
 // 判断IocConfig对象是否是单例
 System.out.println(ac.isSingleton("IocConfig"));
 // 获取IocConfig对象
 IocConfig iocConfig = ac.getBean(IocConfig.class);
 
 // 获取AccountDao对象
 AccountDao accountDao01 = iocConfig.accountDao();
 AccountDao accountDao02 = iocConfig.accountDao();
 System.out.println(accountDao01 + "," + accountDao02);
 
 accountDao01.test();
 }
}

3.4.实例3-读取外部配置文件

在开发 Java web 应⽤时,配置⽂件是⽐较常⻅的,⽐如 xml,properties,yml 等⽂件,在 Spring 应 ⽤中对于配置⽂件的读取同样提供⽀持。对于配置⽂件读取,我们可以通过 @PropertySource 注解声明 到类级别来指定读取相关配置。

Spring El 表达式语⾔,⽀持在 Xml 和注解中使⽤表达式,类似于 JSP 中 EL 表达式,Spring 框架借助 该表达式实现资源注⼊,主要通过 @Value 注解来使⽤表达式,通过 @Value 注解,可以实现普通字符 串,表达式运算结果,Bean 属性⽂件内容,属性⽂件等参数注⼊。具体使⽤如下:

3.4.1.准备配置文件

src/main/resources ⽬录下添加 user.properties、jdbc.properties ⽂件

# user.properties
user.userName=admin
user.password=admin

#jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/hr?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root

3.4.2.@PropertySource加载配置文件

通过@PropertySource加载property配置文件

@Configuration
@ComponentScan("com.xxxx")
@PropertySource(value={
   "classpath:jdbc.properties","classpath:user.properties"})
public 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值