自己的springboot 2.0的基本原理知识点梳理

编辑器:idea
一、.纯手写springboot框架 -创建内置Tomcat容器
1.依赖的导入

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--java语言操作Tomcat-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>8.5.29</version>
        </dependency>
        <!--tomcat对jsp支持-->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
            <version>8.5.29</version>
        </dependency>

2.创建servlet的测试类

@WebServlet(name = "IndexServlet")
public class IndexServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().print("this is index.....tomcat");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

3.java代码启动Tomcat

public class Test001 {
    private static int PORT = 8080;
    private static String Contex_Path = "/itmayiedu";
    private static String SERVLET_NAME = "/indexServlet";
    public static void main(String[] args) throws LifecycleException {
         //创建Tomcat服务器
        Tomcat tomcatserver = new Tomcat();
        //设置端口号
        tomcatserver.setPort(PORT);
        //是否设置自动部署
        tomcatserver.getHost().setAutoDeploy(false);
        //创建上下文
        StandardContext standardContext = new StandardContext();
        standardContext.setPath(Contex_Path);
        //监听上下文
        standardContext.addLifecycleListener(new Tomcat.FixContextListener());
        //Tomcat容器添加上下文
        tomcatserver.getHost().addChild(standardContext);
        //创建servlet
        tomcatserver.addServlet(Contex_Path,SERVLET_NAME,new IndexServlet());
        //添加servleturl映射
        standardContext.addServletMapping("/index",SERVLET_NAME);
//        standardContext.addServletMappingDecoded("/index",SERVLET_NAME);
        tomcatserver.start();
        System.out.print("启动成功");
        //异步进行接收请求
        tomcatserver.getServer().await();


    }
}

二、.纯手写springboot框架 -使用注解启动springmvc
1.跟配置

@Configuration
@ComponentScan("com.itmayiedu")
public class RootConfig {
}

2.扫描

public class spittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    //加载跟配置信息
    @Override
    protected Class<?>[] getRootConfigClasses() {

        return new Class[]{RootConfig.class};
    }

    //springmvc 加载配置信息
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }


    //springmvc 拦截url映射 拦截所有请求
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

3.springmvc配置

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.itmayiedu.controller"})
public class WebConfig extends WebMvcConfigurerAdapter {
    //配置视图转换器
    @Bean
    public ViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("WEB-INF/jsp");
        viewResolver.setSuffix(".jsp");
        //可以在jsp页面通过${}访问beans、
        viewResolver.setExposeContextBeansAsAttributes(true);
        return viewResolver;
    }
}

service和controller层跟以前一样

三、springboot整合mybatis
1.依赖的导入:

 <!-- 编写web时应该导入的springboot依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!--mysql  -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--lombok  -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <!--针对打包的时候找不到主清单属性的解决方式-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--这个指定你当前application文件的位置-->
                    <mainClass>com.itmayiedu.MybatisApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2.application.properties文件

spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&useAffectedRows=true&serverTimezone=GMT%2B8&useAffectedRows=true
spring.datasource.username=root
spring.datasource.password=12345
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

3.逻辑结构
(1)mapper层

public interface UserMapper {
    @Select("select * from test where name=#{name}")
    User findByName(@Param("name")String name);
    @Insert("insert into test(name,age) values(#{name},#{age})")
    int insert(@Param("name")String name,@Param("age")Integer age);
}

(2)service层

@Service
public class UserService{
    @Autowired
    private UserMapper userMapper;
    public User findByName(String name) {
        return userMapper.findByName(name);
    }
    @Transactional
    public int insertUser(String name,Integer age) {
        int result=userMapper.insert(name, age);
        return result;
    }
}

(3)controller层

@RestController
public class UserController {

    @Autowired
    private UserService userService;
    @RequestMapping("/insertUser")
    public Integer insertUser(String name,Integer age) {

        return userService.insertUser(name, age);
    }

    @Value("${itmayiedu.httpurl}")
    private String httpurl;
    @Value("${itmayiedu.name}")
    private String name;
    @Value("${itmayiedu.student.money}")
    private String money;
    @RequestMapping("/index")
    public String index() {

        return httpurl+name+money;
    }
}

(4)启动层

@SpringBootApplication
@MapperScan(basePackages="com.itmayiedu.mapper")
public class MybatisApplication {

    public static void main(String[] args) {

        SpringApplication.run(MybatisApplication.class, args);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值