发表于: 2022-05-06 18:29:40

1 574




学习spring的部分代码的理解:


//声明控制器
@Controller
//访问路径
@RequestMapping("/demo")
public class DemoController {
private Object Date;

   /**
    * http://localhost:8080/demo/handle01
    */
   //访问路径
   @RequestMapping("/handle01")



//应用程序的上下文
//        ApplicationContext context =
//                new ClassPathXmlApplicationContext("applicationContext.xml");
//        JdbcTemplate jdbcTemplate  =  (JdbcTemplate) context.getBean("jdbcTemplate");
                   //查找数据库中的信息
    String sql = "select id,name,school,type,time,student,make_a_wish from biage";

    System.out.println(jdbcTemplate.queryForList(sql));
    for (Map<StringObject> stringObjectMap : jdbcTemplate.queryForList(sql)) {
System.out.println(stringObjectMap);
    }
//将数据库查询结果转换为Java
    List<Biage> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Biage.class));
    for (Biage biage : list) {
System.out.println("id+ biage.getId());
        System.out.println("名字是+ biage.getName());
        System.out.println("学校是+ biage.getSchool());
        System.out.println("属性是+ biage.getStudent());
        System.out.println("属性是+ biage.getMake_a_wish());


//依赖注入jdbcTemplate
   @Resource(name "jdbcTemplate")
private JdbcTemplate jdbcTemplate;
//表示重写
@Override
public void b(){
System.out.println("HELLO CHENGDU");
}

//表示重写
@Override


<property name="checkoutTimeout" value="1000"></property>
<property name="initialPoolSize" value="100"></property>
<!--缓存池最大值-->
<property name="maxPoolSize" value="1000"></property>
<!--缓存池最小值-->
<property name="minPoolSize" value="50"></property>


<!--jdbc连接数据库配置连接池-->
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="user" value="root"></property>
<property name="password" value="adbrk"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/fc"></property>


<!--配置bean,配置后该类由spring管理-->
<bean id="testDao" class="com.dao.TestDaoImpl"/>
<bean id="testFrom" class="com.dao.TestFromlmpl"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">


<!--系统默认配置的连接池-->
   <bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="username" value="root"></property>
       <property name="password" value="adbrk"></property>
       <property name="url" value="jdbc:mysql://localhost:3306/fc"></property>
       <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
   </bean>


/查询mysql数据库下Biage的所有记录

List<Biage> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Biage.class));


springmvc视图:

<!--配置的前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--配置的前缀-->

<property name="suffix" value=".jsp"/>


//依赖注入
@Resource(name = "jdbcTemplate")
//定义接口声明
private  JdbcTemplate jdbcTemplate;


学习了spring DI还有部分soring boot:


DI:依赖注入,实现控制反转(IoC)的一种方式。控制反转即获取依赖的资源的方式反转了,使代码模块的耦合关系变弱。

ref被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs对象上。


如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向该子组件实例

通俗的讲,ref特性就是为元素或子组件赋予一个ID引用,通过this.$refs.refName来访问元素或子组件的实例

Struts1只是一个web层的框架,它只是用于解决web层的问题,千万不要想着用Struts1去操纵数据库


@Autowired默认是根据参数类型进行自动装配,且必须有一个Bean候选者注入默认required=true,

如果允许出现0个Bean候选者需要设置属性“required=false”,“required”属性含义和@Required一样,

只是@Required只适用于基于XML配置的setter注入方式,只能打在setting方法上。


数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。

释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。


这项技术能明显提高对数据库操作的性能。数据库连接池其实就是一个容器(集合),存放着数据库连接。

连接池:

1 dbcp

dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。


这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml

使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性

有所下降,此外不提供连接池监控

2 c3p0


c3p0是另外一个开源的连接池,在业界也是比较有名的,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

这个连接池的配置参见附件压缩包中的:c3p0.xml。


使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,

          此外不提供连接池监控。

         

3 proxool


proxool这个连接池可能用到的人比较少,但也有一定知名度,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

这个连接池的配置参见附件压缩包中的:proxool.xml。


使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性有一定问题,有一个需要长时间跑批的任务场景任务,同样的代码

在另外2个开源连接池中成功结束,但在proxool中出现异常退出。


优点:

依赖注入允许用户进行更灵活的配置,并且理论上只需对用户代码做更改即可满足需求。

依赖注入这种方式可以用来将系统的一些配置写在配置文件中,这样可以通过配置文件而不用进行系统的重编译,达到功能的修改。


更加便于单元测试

通过依赖注入,使得用户代码不需要关心它需要使用的服务具体的实现细节。


缺点:

增加了客户代码的复杂度,因为依赖的注入需要客户代码来实现。

(其实很正常,有一方的活少了,总有一方的活会躲起来,毕竟这些任务都是必须的,只是通过依赖注入可以减少没必要的修改)


会增加阅读的难度。因为你看到的代码,它的具体执行过程还跟它真正注入的依赖有关联,

不同的依赖,执行的任务可能是不一样的,没有以前直观。但是我认为这个不是很大的缺点,规范的代码,看起来还是和看诗一样的。


会倒置对依赖注入框架的过度依赖。

Spring Boot是一个基于Java的开源框架,用于创建微服务。它由Pivotal Team开发,用于构建独立的生产就绪Spring应用。


微服务是什么?

微服务(Micro Service)是一种允许开发人员独立开发和部署服务的体系结构。

每个运行的服务都有自己的流程,这实现了轻量级模型以支持业务应用程序。


Spring Boot是什么?

Spring Boot为Java开发人员提供了一个很好的平台,可以开发一个可以运行的独立和生产级Spring应用程序。

可以开始使用最少的配置,而无需进行整个Spring配置设置


优点Spring Boot为其开发人员提供以下优势 - 

易于理解和开发Spring应用

提高生产力

缩短开发时间

Spring Boot 具有以下特点:


1. 独立运行的 Spring 项目

Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行。


2. 内嵌 Servlet 容器

Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。


3. 提供 starter 简化 Maven 配置

Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。


4. 提供了大量的自动配置

Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。


5. 自带应用监控

Spring Boot 可以对正在运行的项目提供监控。


6. 无代码生成和 xml 配置

Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。


明天计划:学习spring mvc





返回列表 返回列表
评论

    分享到