首页 > 其他分享 >SpringBoot简单使用(1)

SpringBoot简单使用(1)

时间:2022-08-31 21:46:28浏览次数:52  
标签:String 配置文件 age 简单 name 使用 size public SpringBoot

1:xml文件与javaconfig

 1.1.1什么是javaconfig:是spring提供的使用java类配置容器。配置spring IOC容器的纯java方法

优点:可以使用面向对象的方式,一个配置类可以继承配置类,可以重写方法,能够避免繁琐的xml配置

  1.1.2:先来看xml容器配置:

      创建实体类:

public class Students {
private String name;
private int age;

@Override
public String toString() {
return "Students{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Students(String name, int age) {
this.name = name;
this.age = age;
}

public Students() {
}
}

     创建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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="com.ztb.pojo.Students">
<property name="name" value="张三"></property>
<property name="age" value="20"></property>
</bean>
</beans>

   测试:

@Test
public void test1(){
ApplicationContext context = new ClassPathXmlApplicationContext("applationcontext.xml");
Students student =(Students) context.getBean("student");
System.out.println(student);
}

  1.1.3 javaconfig配置容器:

  创建实体类:

public class Teacher {
private String name;
private int age;

@Override
public String toString() {
return "Teacher{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Teacher(String name, int age) {
this.name = name;
this.age = age;
}

public Teacher() {
}
}

 创建javaconfig类:


@Configuration //@Configuration作用是相当于xml配置文件的作用
//在这个类中有很多方法,方法的返回值是对象。
//在方法上加入@Bean,表示方法返回值的对象放入到容器中
public class SpringJavaConfig {


@Bean //如果@Bean没有使用属性,那么默认对象名称就是方法名,例如下面的要取的bean的名称为teacher
public Teacher teacher(){
Teacher teacher = new Teacher("张老师", 23);
return teacher;
}

@Bean(name = "stu") //name:指定要取的bean对象的名称
public Students students(){
Students students = new Students("张学生", 3);
return students;
}
}

 测试:

@Test
public void test2(){
//因为没有使用xml配置文件,所以使用java类代替xml配置文件的作用
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringJavaConfig.class);
Teacher teacher =(Teacher) context.getBean("teacher");
System.out.println(teacher);
}

@Test
public void test3(){
//因为没有使用xml配置文件,所以使用java类代替xml配置文件的作用
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringJavaConfig.class);
Students students =(Students) context.getBean("stu");
System.out.println(students);
}

  1.1.4:@ImportResource:@ImportResource作用是导入xml配置文件,等同于xml文件的resources:

代码:

@Configuration
@ImportResource(value = {"classpath:applationcontext.xml"})
public class SystemConfig {

}

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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student11" class="com.ztb.pojo.Students">
<property name="name" value="张三"></property>
<property name="age" value="20"></property>
</bean>
</beans>

测试:

@Test
public void test4(){
//因为没有使用xml配置文件,所以使用java类代替xml配置文件的作用
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SystemConfig.class);
Students students =(Students) context.getBean("student11");
System.out.println(students);
}

  1.1.5:@PropertyResource:

@PropertyResource: 读取properties属性配置文件。 使用属性配置文件可以实现外部化配置 ,

在程序代码之外提供数据。

步骤:

  1. 在resources目录下,创建properties文件, 使用k=v的格式提供数据

  2. 在PropertyResource 指定properties文件的位置

  3. 使用@Value(value="${key}")

代码:

@Component("tiger") //把名字为tiger的实体类注入到spring容器中,bean的id为tiger
public class Tiger {
@Value("${tiger.name}")
private String name;
@Value("${tiger.age}")
private int age;

@Override
public String toString() {
return "Tiger{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Tiger(String name, int age) {
this.name = name;
this.age = age;
}

public Tiger() {
}
}





@Configuration
@PropertySource("classpath:config.properties") //把config.properties文件读入进来
@ComponentScan(basePackages = "com.ztb.pojo") //因为实体类已经被注入,所以需要用组件扫描到实体类对象
public class SystemConfig {

}

properties文件:

tiger.name=东北虎
tiger.age=3

测试:

@Test
public void test5(){
//因为没有使用xml配置文件,所以使用java类代替xml配置文件的作用
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SystemConfig.class);
Tiger tiger =(Tiger) context.getBean("tiger");
System.out.println(tiger);
}

1.2.1springboot重要注解:

@SpringBootApplication : @SpringBootApplication 是 一 个 复 合 注 解 , 是 由 @SpringBootConfiguration, @EnableAutoConfiguration ,@ComponentScan 联合在一起组 成的。

@SpringBootConfiguration : 就 是 @Configuration 这 个 注 解 的 功 能 , 使 用 @SpringBootConfiguration 这个注解的类就是配置文件的作用。 @EnableAutoConfiguration:开启自动配置, 把一些对象加入到 spring 容器中。

@ComponentScan:组件扫描器, 扫描注解,根据注解的功能,创建 java bean,给属性赋值 等等。组件扫描器默认扫描的是 @ComponentScan 注解所在的类, 类所在的包和子包。

1.2.2:spring boot的核心配置文件:Spring Boot 的核心配置文件用于配置 Spring Boot 程序,名字必须以 application 开始,有两种格式,一种是properties格式,一种是yml格式,推荐使用yml格式

   1.2.2.1 properties文件:可以修改核心配置文件:比如修改端口号和发布项目的路径名:

server.port=9092  和 server.servlet.context-path=/boot

   1.2.2.1 yml文件:

server:
port: 9091
servlet:
context-path: /myroot

注意 : 当两种格式配置文件同时存在 ,在 SpringBoot2.4 开始, 使用的是 yml 配置文件. 修改配置名称都为 application。

 

   1.2.2.2 多环境配置:

在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境 之间切换,SpringBoot 提供了多环境配置,具体步骤如下:为每个环境创建一个配置文件,命名必须以 application-环境标识.properties|yml

 

 

 在application.properties指定要用哪个环境:spring.profiles.active=test (用的测试环境)

    1.2.2.3:@Value注解

               @Value("${key}"),key来自application.properties(yml)

例子:在application中:

school.name="海定区"
school.size="2000"

在controller类中:

@Controller
public class HelloSpringBoot {
@Value("${school.name}")
private String name;
@Value("${school.size}")
private String size;

@RequestMapping("/hello")
@ResponseBody
public String hello(){
return "name"+name+"size"+size;
}
}

启动application,访问浏览器

 1.2.2.4:将配置文件映射为java对象

  对上面的进行优化,由于上面的需要一个一个写value注入值,所以进行的优化为:创建一个实体类,利用@configurationproperties注解进行全部注入

例子:

application配置文件:

school.name="海定区"
school.size="2000"

实体类:

@Component
@ConfigurationProperties(prefix = "school") //会在application配置文件中寻找前缀为school的文件,注入给成员变量
public class School {
private String name;
private String size;

@Override
public String toString() {
return "School{" +
"name='" + name + '\'' +
", size='" + size + '\'' +
'}';
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSize() {
return size;
}

public void setSize(String size) {
this.size = size;
}

public School(String name, String size) {
this.name = name;
this.size = size;
}

public School() {
}
}

 

controller类:

@Controller
public class HelloSpringBoot {
@Autowired
private School school;

@RequestMapping("/hello")
@ResponseBody
public String hello(){
return school.getName()+school.getSize();
}
}

 

1.3 springboot使用jsp

步骤1:导入pom依赖和静态资源处理问题:

<!--        引入springboot 内嵌的toncat对jsp的解析包,不加解析不了jsp页面-->
<!-- 如果只是使用jsp页面,可以只添加该依赖-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- 如果要使用servlet必须添加以下两个依赖-->
<!-- servlet以来的jar包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>

<!-- jsp依赖的jar包-->
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>3.0.0</version>
</dependency>
<!-- 如果要使用jstl,则必须添加jstl依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>

<build>
<!--SpringBoot 要求 jsp 文件必须编译到指定的
META-INF/resources 目录下才能访问,否则访问不到。-->
<resources>
<resource>
<!-- 源文件位置-->
<directory>src/main/webapp</directory>
<!-- 指定编译到META-INF/resources,该目录不能随便写-->
<targetPath>META-INF/resources</targetPath>
<!--指定要把哪些文件编译进去,**表示 webapp 目录及子
目录,*.*表示所有文件-->
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>

2:在main文件夹下创建webapp文件夹,在webapp文件夹中建立index.jsp文件

<body>
这是jsp,${data}
</body>

3.在核心配置文件中加入视图解析器

spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

4:编写controll类:

@Controller
public class HelloSpringBoot {


@RequestMapping("/jsp")
public String jsp(HttpServletRequest request){
request.setAttribute("data","存了一个jsp");
return "index";
}
}

5访问浏览器

注意:由于在静态资源处理中把resources写成了resource,导致页面错误,所以一定要严格按照springboot的约定来写

 

 

1.4使用容器来获取对象:

可以通过启动类SpringApplication.run(Application.class, args); 返回值获取容器。

例子:

实体类对象注入到spring容器中:

package com.ztb.pojo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component("sc")
@ConfigurationProperties(prefix = "school") //会在application配置文件中寻找前缀为school的文件,注入给成员变量
public class School {
private String name;
private String size;

@Override
public String toString() {
return "School{" +
"name='" + name + '\'' +
", size='" + size + '\'' +
'}';
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSize() {
return size;
}

public void setSize(String size) {
this.size = size;
}

public School(String name, String size) {
this.name = name;
this.size = size;
}

public School() {
}
}

主启动类获得对象:

@SpringBootApplication
public class Springboot01Application {

public static void main(String[] args) {

ApplicationContext context = SpringApplication.run(Springboot01Application.class, args);
Object sc = context.getBean("sc");
System.out.println(sc);
}

}

一般用于测试是想获取哪个对象的值,直接用容器即可。

标签:String,配置文件,age,简单,name,使用,size,public,SpringBoot
From: https://www.cnblogs.com/zhangtaibing/p/16644601.html

相关文章

  • Cocoapods的简单介绍和使用
    1、Cocoapods运行环境和gem命令1.1Ruby运行环境和gem命令Mac自带Ruby环境。如果gem版本太旧,可以使用以下指令升级到最新: sudogemupdate--system检查Ruby版本指......
  • redis的安装与使用
    Redis安装与命令使用安装:@1:下载地址:Download|Redis@2:安装过程先把下载好的redis的安装包放到linux服务器的相关位置https://download.redis.io/releases/redis-6.2......
  • redis+java简单6位数验证码验证
    实现思路定义一个方法实现随机二维码publicstaticStringgetCode(){//发送六位数验证码Randomrandom=newRandom();Stringcode="......
  • Arch 使用备忘
    目录安装解决问题一段时间不更新,则pgp签名失效美化安装待补解决问题一段时间不更新,则pgp签名失效先单独更新archlinux-keyring包美化......
  • 在visual studio中使用cmake生成dll中的坑
    最近改用visualstudio写c++,把我之前基于MinGW的代码库clon下来在vs中跑,结果不能运行,因为链接器总是莫名奇妙地链接的我想要生成的dll文件同名的lib文件如下图所示文件结......
  • linux中awk的小案例使用
    1.排版整齐的输出第一列与最后一列awk'{printf"%-15s%s\n",$1,$NF}'data2.txt   2.对于数据的每个字段之间进行控制使用print函数打印,如果......
  • java使用Stream简单操作集合
     效果图  本项目使用springbootpom依赖<!--lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <v......
  • 使用正则表达式匹配任意字符包括空格和换行符
    今天在PHP中想使用正则表达式来获取一段文本中的任意字符。于是很随意得就写出如下匹配规则:(.*)结果运行之后才发现,无法获得换行之后的文本。于是查了一下手册,才......
  • 在 node 中使用 jquery ajax
    对于前端同学来说,ajax请求应该不会陌生。jquery真的ajax请求做了封装,可以通过下面的方式发送一个请求并获取相应结果:$.ajax({url:"https://echo.apipost.cn/get.......
  • django版本配置问题,静态文件,orm,orm的使用
    django版本配置问题解决及其他django初始配置静态文件及相关配置静态文件static动态解析static配置请求方法(GETPOST)request对象方法pycharm链......