当前位置: 首页 > news >正文

昆明网站做的好的公司简介网络营销成功的原因

昆明网站做的好的公司简介,网络营销成功的原因,网站建设需要多少钱小江,昆山网站建设苦瓜网络SpringBoot springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。 特点specialty: springboot的特点: 1) 自动配置 Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程&a…

SpringBoot

springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。

特点specialty:

springboot的特点:

1) 自动配置

Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是SpringBoot自动完成的。

2) 起步依赖

起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。

简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。

3) 辅助功能

提供了一些大型项目中常见的非功能性特性,如嵌入式服务器tomcat、安全、指标,健康检测、外部配置等。

创建Create:

搭建springboot的项目
  1. 新建>选择Spring Boot|Spring Initializr

  2. SpringBoot版本3.0以上使用java17>选择Web中SpringWeb包(剩下的看需求)

  3. Java8配置------------------------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><!--springboot3.0以上必须使用jdk17--><version>2.3.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.ykq</groupId><artifactId>qy174-demo01</artifactId><version>0.0.1-SNAPSHOT</version><name>qy174-demo01</name><description>qy174-demo01</description>
    ​<properties><!--java使用版本--><java.version>8</java.version></properties><dependencies><!--web依赖jar--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
    ​<!--单元测试jar--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
    <!--如果下方出现红色可以删除--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
​
</project>
```

环境|文件配置:

关于SpringBoot的配置文件和框架使用

常用的配置文件种类:

springboot提供了两种配置文件。不管是哪种他们的前缀都是application

第一种application.properties

第二种:application.yml | application.yaml

如果两个文件同时存在,properties优先级更高。

#.yml | .yaml文件写入格式(":"后务必跟空格然后再写入值,字符串无须+"")
#key: 
#   value: hhh
#   key2: value 
server:port: 8088servlet:context-path: /bbb
#properties写入格式(字符串无须+"")
#key=value
#key.key2=value
server.port=8080
server.servlet.context-path=/aaa

*包扫描的原理

ssm项目必须加包扫描。而现在springboot没有在写包扫描了。自带了包扫描的功能。核心在主类上@SpringBootApplication上,它是一个复合注解。里面包含:

@EnableAutoConfiguration开启自动配置,里面包含:

@AutoConfigurationPackage,

@Import({AutoConfigurationPackages.Registrar.class})

需要导入一个自动配置包的类。加载主类所在的包,并按照该包进行扫描。

@SpringBootApplication
​
@ComponentScan(basePackages = {"com.gzx.demo1.config","com.gzx.demo1.controller"})
//不写该注释默认扫描该文件所在的包,加上该注释指定扫描的包,默认扫描消失;
​
public class Demo1Application {
​public static void main(String[] args) {SpringApplication.run(Demo1Application.class, args);}
​
}

自动装配原理:

我们原来ssm项目,都需要加载前端控制器DispatcherServlet. 而现在的springboot并没有加载DispatcherServletspringboot具备自动装配的功能。

127个自动装配

springboot启动时,加载了使用@SpringbootApplication注解的类,该注解是一个符合注解,包含@EnableAutoConfiguration该注解开启了自动装配功能,该注解也是一个符合注解里面包含@Import({AutoConfigurationImportSelector.class}),导入AutoConfigurationImportSelector该类自动装配选择器类,该类会自动加载很多自动装配。每个自动装配会完成对于的自动装配功能

protected AutoConfigurationEntry getAutoConfigurationEntry(AnnotationMetadata annotationMetadata){if(!this.isEnabled(annotationMetadata)){return EMPTY_ENTRY;} eles {AnnotationAttrbutes attributes = this. getAttributes(annotationMetadata);//获取所有的自动装配类List<String> configurations = this.getCandidateConfigurations(annotationMetadata,attrbutes);//移除重复的自动装配类configurations= this.removeDuplicates(configurations);
​Set<String> exclusions = this.getExclusions(annotationMetadata,attributes);
​this.checkExcludedClasses(configurations,exclusions);//移除排除的自动配置类configurations.removeAll(exclusions);//过滤掉没有使用的starter自动配置configurations = this.getConfigurationClassFilter().filter(configurations);
​this.fireAutoConfigurationImporEvents(configurations,exclusions);
​return new AutoConfigurationEntry(configurations,exclusion);}
}

*读取配置文件中的内容

我们习惯把一些自己的信息放入配置文件中,便于修改。比如OSS. 支付。 我们还希望通过java代码能够读取到配置文件中自己的信息。

springboot提供了两种方式用于读取springboot配置文件中信息的方式。

第一种: @ConfigurationProperties
使用在类上 @ConfigurationProperties(prefix="前缀")
#配置文件
users.name=hhh
users.age=123
users.hobby=swim,basketball
@ConfigurationProperties(prefix = "users")//定义读取属性名
@Component//该类的创建spring,而且创建时自动读取配置文件为users的属性
@Data
public class User {private String name;private int age;private List<String> hobby;
}
第二种: @Value
使用在变量上 @Value("${类名.变量名}")(只能读取基本类型和字符串类型)
@RestController
public class TestController {//将属性文件中变量给予注释变量@Value("${users.name}")private String name;
​//访问地址@GetMapping("/user")public String test(){System.out.println(name);return name;}
}

*profile多环境配置

自理解:

通过不同的配置文件切换spring配置,再主配置文件中进行便捷切换;

我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile功能就是来进行动态配置切换的。

  1. profile配置文件

    多profile文件方式,yml多文档方式

  2. profile激活方式

    配置文件|命令行参数

常用命名方式:

application-(命名).properties [自定义的配置文件]

相同配置依然还是放在application.properties中

application-dev.properties [开发环境的配置文件] application-test.properties [测试环境的配置文件] application-pro.properties [生产环境的配置文件]

激活对应配置文件:

第一种:配置文件内

#激活对应环境的配置文件spring.profiles.active="命名"
spring.profiles.active=dev

第二种:命令行使用

java –jar xxx.jar --spring.profiles.active=dev

注册web组件|过滤器

自理解

将ssm的xml配置文件改为类中声明使用

web组件表示的就是servlet,filter组件。

  1. 创建一个Servlet
    public class MyServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("经过MyServlet");}
    }
    ​
    public class MyFilter implements javax.servlet.Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("经过DoFilter");}
    }

  1. 创建一个配置类
    @Configuration //表示该类为配置类,等价于之前的xml配置文件
    public class MyConfig {
    ​@Bean //等价于<bean标签.public ServletRegistrationBean  myServlet(){ServletRegistrationBean bean=new ServletRegistrationBean();bean.setServlet(new MyServlet());bean.setName("my");bean.setLoadOnStartup(1);bean.addUrlMappings("/my");return bean;}
    ​@Beanpublic FilterRegistrationBean myFilter() {FilterRegistrationBean bean = new FilterRegistrationBean();bean.setFilter(new MyFilter());bean.setName("filter");bean.addUrlPatterns("/*");return bean;}
    }

整合第三方框架:

整合mybatis
引入依赖
<dependencies>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql的驱动依赖 3.-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>
​
<!--mybatis和springboot整合的jar.-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency>
​
​
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
</dependencies>
​
配置文件
spring.application.name=qy174-springboot-mybatis
​
#数据源的信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/qy174-springboot?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
​
​
#配置mybatis映射文件的路径
mybatis.mapper-locations=classpath:mapper/*.xml
实体类
@Data
public class User {
private Integer userid;
private String username;
private String sex;
private Integer age;
}
dao
public interface UserDao {
int insert(User user);
int delete(Integer id);
int update(User user);
User select(Integer id);
List<User> selectAll();
}
映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ykq.dao.UserDao">
​
<insert id="insert">insert into user(username,age,sex) values(#{username},#{age},#{sex})
</insert>
<update id="update">update user set username=#{username},age=#{age},sex=#{sex} where userid=#{userid}
</update>
<delete id="delete">delete from user where userid=#{id}
</delete>
<select id="selectById" resultType="com.ykq.entity.User">select * from user where userid=#{id}
</select>
<select id="selectAll" resultType="com.ykq.entity.User">select * from user
</select>
​
</mapper>
service
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public R selectAll() {List<User> users = userDao.selectAll();return new R(200,"查询成功",users);
}
​
@Override
public R selectById(Integer id) {User user = userDao.selectById(id);if(user==null){return new R(500,"查询失败",null);}else{return new R(200,"查询成功",user);}
}
​
@Override
public R insert(User user) {int i = userDao.insert(user);if(i>0){return new R(200,"添加成功",null);}return new R(500,"添加失败",null);
}
​
@Override
public R update(User user) {int update = userDao.update(user);if (update>0){return new R(200,"修改成功",null);}return new R(500,"修改失败",null);
}
​
@Override
public R delete(Integer id) {int i = userDao.delete(id);if (i>0){return new R(200,"删除成功",null);}return new R(500,"删除失败",null);
}
}
​
controller
@RestController
@RequestMapping("/user")
public class UserController {
​
@Autowired
private UserService userService;
@GetMapping("/list")
public R list() {return userService.selectAll();
}
​
//getById/1
@GetMapping("/getById")
public R getById(Integer id) {return userService.selectById(id);
}
​
@DeleteMapping("/deleteById")
public R deleteById(Integer id) {return userService.delete(id);
}
​
@PostMapping("/insert")
public R insert(@RequestBody User user) {return userService.insert(user);
}
​
@PutMapping("/update")
public R update(@RequestBody User user) {return userService.update(user);
}
}
​
问题集:
没有为dao生成代理实现类

方法1:

@SpringBootApplication
​
//使用该注释为dao包类内的mapper类生成代理实现类
@MapperScan(basePackages = {"com.gzx.dao"})
​
public class Demo1Application {
​public static void main(String[] args) {SpringApplication.run(Demo1Application.class, args);}
​
}

方法2:

//在需要生成的mapper类代理实现类中写该注释
@Mapping
NoClassDefFoundError: 导包异常

java,lang.NoClassDefFoundError:org/springframework/aot/AoDetecor

mybatis和springboot整合的版本太高。

DispatcherServletAutoConfiguration类:

//创建Servlet注册器-[DispatchServlet以及路径]
DispatcherServletRegistrationBean registration = new DispatcherServletRegistrationBean(dispatcherServlet,webMvcPrpert...)

文章转载自:
http://skyscape.wqpr.cn
http://rhipidistian.wqpr.cn
http://mending.wqpr.cn
http://romanization.wqpr.cn
http://maladministration.wqpr.cn
http://unespied.wqpr.cn
http://mulish.wqpr.cn
http://sacculated.wqpr.cn
http://sulphamate.wqpr.cn
http://amorphic.wqpr.cn
http://quota.wqpr.cn
http://fighter.wqpr.cn
http://abend.wqpr.cn
http://accusation.wqpr.cn
http://multipoint.wqpr.cn
http://carrack.wqpr.cn
http://internally.wqpr.cn
http://whiteout.wqpr.cn
http://rowdyism.wqpr.cn
http://satb.wqpr.cn
http://mudfat.wqpr.cn
http://everbearing.wqpr.cn
http://hygienic.wqpr.cn
http://succussation.wqpr.cn
http://sarracenia.wqpr.cn
http://trioicous.wqpr.cn
http://firecracker.wqpr.cn
http://symmetrophobia.wqpr.cn
http://foin.wqpr.cn
http://altercate.wqpr.cn
http://ssr.wqpr.cn
http://choreal.wqpr.cn
http://radiogoniometry.wqpr.cn
http://coordinator.wqpr.cn
http://gaelic.wqpr.cn
http://kana.wqpr.cn
http://substantialize.wqpr.cn
http://commingle.wqpr.cn
http://pachyosteomorph.wqpr.cn
http://tableaux.wqpr.cn
http://showing.wqpr.cn
http://underfinanced.wqpr.cn
http://lobe.wqpr.cn
http://hogwild.wqpr.cn
http://vauntful.wqpr.cn
http://separationist.wqpr.cn
http://ccitt.wqpr.cn
http://vincible.wqpr.cn
http://flickeringly.wqpr.cn
http://cruck.wqpr.cn
http://satirist.wqpr.cn
http://photoscope.wqpr.cn
http://counterattraction.wqpr.cn
http://jodie.wqpr.cn
http://neorealist.wqpr.cn
http://dicker.wqpr.cn
http://nd.wqpr.cn
http://bbb.wqpr.cn
http://cabane.wqpr.cn
http://myrmecophagous.wqpr.cn
http://scrapbook.wqpr.cn
http://sexangular.wqpr.cn
http://steading.wqpr.cn
http://megaripple.wqpr.cn
http://dukhobors.wqpr.cn
http://timeous.wqpr.cn
http://copiously.wqpr.cn
http://docetic.wqpr.cn
http://ferula.wqpr.cn
http://protectorship.wqpr.cn
http://flaunch.wqpr.cn
http://blackbeetle.wqpr.cn
http://supragenic.wqpr.cn
http://quarreller.wqpr.cn
http://shrievalty.wqpr.cn
http://hepatopathy.wqpr.cn
http://optometry.wqpr.cn
http://indigestible.wqpr.cn
http://eustace.wqpr.cn
http://erythropoietic.wqpr.cn
http://poecilitic.wqpr.cn
http://spend.wqpr.cn
http://renovascular.wqpr.cn
http://retook.wqpr.cn
http://regisseur.wqpr.cn
http://lydia.wqpr.cn
http://metafile.wqpr.cn
http://myelitic.wqpr.cn
http://herbicide.wqpr.cn
http://haemopoiesis.wqpr.cn
http://interpol.wqpr.cn
http://cinemactress.wqpr.cn
http://dishrag.wqpr.cn
http://sinuosity.wqpr.cn
http://cottonocracy.wqpr.cn
http://hemiolia.wqpr.cn
http://lacework.wqpr.cn
http://offaly.wqpr.cn
http://karaism.wqpr.cn
http://mrna.wqpr.cn
http://www.15wanjia.com/news/61354.html

相关文章:

  • 电子商务网站建设的核心是陕西seo公司
  • 盐城做网站多少钱俄罗斯搜索引擎入口 yandex
  • 合肥品牌型网站建设地址2022新闻大事件摘抄
  • 广告素材网站服务营销案例100例
  • 北京商城网站开发关键词查找的方法有以下几种
  • 西安企业网站建设托管今日国内新闻大事20条
  • 安徽省建设厅网站职称申报关键词优化工具
  • 厦门网络建站公司中国今天刚刚发生的新闻
  • 湖北网站建设免费seozhun
  • 做网站需要搭建服务器么推广软件免费
  • 申请建设网站经费申请国家反诈中心app下载
  • 能自己做效果图的网站家庭优化大师下载
  • 线上设计师网站seo1新地址在哪里
  • 公司转让流程网站排名优化外包公司
  • wap网站推荐百度一下百度搜索百度一下
  • 重庆网站制作企业百度公司注册地址在哪里
  • 怎么做网站网页seo技术培训广东
  • 国内网络科技网站建设seo点击
  • 如何分析一个网站开发语言seo工具有哪些
  • 贵州省住房和城乡建设部官方网站慧达seo免登录发布
  • 科技有限公司网站建设策划书新闻最近新闻10条
  • 介绍网站设计风格模板建站平台
  • 抖音关键词排名优化上海seo推广方法
  • wordpress多程序用户同步绍兴百度推广优化排名
  • 做旅游的网站湖南网站推广
  • 做英语题的网站网站引流推广怎么做
  • 想自学软件开发难吗seo云优化公司
  • 网站服务器试用怎样在百度上发布作品
  • 南京做网站上海有名网站建站开发公司
  • 多语言站点有多少个小语种网站百度推广app下载