Spring-创新互联

Spring核心: Ioc (控制反转):降低程序间的耦合(依赖关系)

站在用户的角度思考问题,与客户深入沟通,找到班戈网站设计与班戈网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、成都做网站、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟主机、企业邮箱。业务覆盖班戈地区。

spring配置:https://blog.csdn.net/qq_47959003/article/details/

Spring开发步骤:

  • 导入Spring开发的基本包坐标
    –Bean标签配置
    ID:Bean实例在Spring容器中的唯一性标识
    class:Bean的全限定名称
    scope:singleton:默认属性,此时只有一个配置属性,只加载一个配置文件 prototype:此时会加载多个配置文件,地址不一样,运行实例会运行多次无参构造

  • 创建Dao接口和实现类
  • 创建Spring核心配置文件
  • 在Spring配置文件中配置UserDaoImpl
  • 使用Spring的API获得Bean实例

Spring重点配置:

id属性:在容器中Bean实例的唯一标识,不允许重复
	class属性:要实例化的Bean的全限定名
	scope属性:Bean的作用范围,常用是Singleton(默认)和prototype
	标签:属性注入
		name属性:属性名称
		value属性:注入的普通属性值
		ref属性:注入的对象引用值
		标签
		标签
		标签
	标签:属性内容同理bean标签:导入其他Spring分文件
Spring配置properties文件
//导入context加载路径,复制beans,把beans改为context//class 表示引入的解析文件对象//name自定义,key为文件中的对应对象

简单实现案例:
采用mvc(model,vision,controll)三层架构设计模式
设计Dao接口,Dao实现类接口,实现方法
Service层接口,service实现类接口,方法实现ApplicationContext对象实例化
controller实现Service对象方法,实例化对象实现方法

在这里插入图片描述

dao层:

接口:
public interface UserDao {
        void run();
}

实现方法:
import com.example.spring_ioc_1.Dao.UserDao;

public class UserDaoImpl implements UserDao {
    @Override
    public void run() {
        System.out.println("run.....");
    }
}

Service层:

接口:
public interface UserService {
    public void save();
}

实现方法:
import com.example.spring_ioc_1.Dao.UserDao;
import com.example.spring_ioc_1.Service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserServiceImpl implements UserService {
    public void save() {
        ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) app.getBean("userDao");
        userDao.run();

    }
}

web控制中心:

import com.example.spring_ioc_1.Service.UserService;
import com.example.spring_ioc_1.Service.impl.UserServiceImpl;


public class Controller {
    public static void main(String[] args) {
        UserService userService = new UserServiceImpl();
        userService.save();
    }
}

applicationContext.xml 配置:

Bean依赖注入:
采用注入方法就不用实现方法
在这里插入图片描述
在这里插入图片描述

– 构造方法
在这里插入图片描述

在这里插入图片描述
name属性指向构造方法中的userDao,ref指向id中的userDao

– set方法

在这里插入图片描述
在这里插入图片描述
当注入的属性值较多时,使用p命名空间
在这里插入图片描述

属性注入

– 普通属性注入:
在这里插入图片描述
在这里插入图片描述

– 集合注入:
创建集合
在这里插入图片描述
map对象设置实现类
setter,getter,tostring方法
在这里插入图片描述
bean编写:
在这里插入图片描述
在这里插入图片描述

配置文件的引入:
当业务较多时,为了区分业务模块,可以进行模块的引入

在这里插入图片描述
在这里插入图片描述
Spring相应api:
当容器中的bean相同class属性只有一种时,可以使用
在这里插入图片描述
相同class出现多次时使用id指向唯一性:
在这里插入图片描述

数据源开发:

– c3p0数据源

com.mchangec3p00.9.5.2
@Test
    //测试c3p0数据源
    public void test1() throws PropertyVetoException, SQLException {
        ComboPooledDataSource source = new ComboPooledDataSource();
        source.setDriverClass("com.mysql.cj.jdbc.Driver");
        source.setJdbcUrl("jdbc:mysql://localhost:3306");
        source.setUser("sa");
        source.setPassword("123456");
        Connection connection = source.getConnection();
        System.out.println(connection);
        connection.close();
    }

– druid数据源

com.alibabadruid1.2.8
@Test
    //测试druid数据源
    public void test2() throws SQLException {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306");
        dataSource.setUsername("sa");
        dataSource.setPassword("123456");
        DruidPooledConnection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();

    }

– 抽取properties文件进行测试

properties文件:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306
jdbc.user=sa
jdbc.password=123456
@Test
    //测试c3p0数据源(抽取properties文件)
    public void test3() throws PropertyVetoException, SQLException {
        //读取配置文件
        ResourceBundle rb = ResourceBundle.getBundle("jdbc"); // 传入文件地址
        String driver = rb.getString("jdbc.driver");
        String url = rb.getString("jdbc.url");
        String user = rb.getString("jdbc.user");
        String password = rb.getString("jdbc.password");
        //创建数据源对象,设置连接
        ComboPooledDataSource dataSource=new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(user);
        dataSource.setPassword(password);
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

    @Test
    //测试druid数据源(抽取properties文件)
    public void test4() throws SQLException {
        //读取配置文件
        ResourceBundle rb = ResourceBundle.getBundle("jdbc"); // 传入文件地址
        String driver = rb.getString("jdbc.driver");
        String url = rb.getString("jdbc.url");
        String user = rb.getString("jdbc.user");
        String password = rb.getString("jdbc.password");
        //创建数据源对象,设置连接
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        DruidPooledConnection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();

    }

spring加载数据源对象
根据抽取数据源对象的不同,需要注意class引用的对象

引入context命名空间

spring加载外部properties文件,并且配置对象
模板:

实现:

@Test
    //测试spring容器产生数据源对象
    public void test5() throws SQLException {ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
        ComboPooledDataSource dataSource = (ComboPooledDataSource) app.getBean("dataSource");
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

注解开发:

在这里插入图片描述
案例实现:

配置Dao层
Service层
web层
以及applicationContext.xml文件
在这里插入图片描述
applicationContext.xml文件配置组件库的扫描,以便对注解开发的命令进行实例化

Dao层

userDaoImpl文件:(语句替换)
//@Component("userDao")

userServiceIml文件:
在这里插入图片描述
在这里插入图片描述
@value标签
1:直接赋值普通属性
2:进行properties文件的抽取(spring需要配置命名空间)
在这里插入图片描述
在这里插入图片描述
注解标注:
4种注解含义一样,对于实现的层级不一样
在这里插入图片描述
初始方法,销毁方法
销毁方法需要在web层手动结束,初始方法在程序执行开始执行
在这里插入图片描述
实现在Dao层
在这里插入图片描述
web层关闭
在这里插入图片描述
Spring新注解:
在这里插入图片描述
在这里插入图片描述
配置spring核心类,还可以根据应用的不同建立不同的分文件
在这里插入图片描述
spring核心类,该类调用

//标志该类是Spring核心配置类
@Configuration

////@ComponentScan("spring_ioc_1")

//导入数据类对象到核心配置文件中来,当需要导入多个时用{}
@Import({DataSourceConfiguration.class})
public class SpringConfiguration {}

数据类:

////@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {@Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.user}")
    private String user;
    @Value("${jdbc.password}")
    private String password;

    @Bean("dataSource")
    public ComboPooledDataSource getDataSource() throws PropertyVetoException { //Spring会将当前的返回值以指定名称存储到Spring容器中
        ComboPooledDataSource source = new ComboPooledDataSource();
        source.setDriverClass(driver);
        source.setJdbcUrl(url);
        source.setUser(user);
        source.setPassword(password);
        return source;
    }
}

基于Spring的Test框架:

导入配置:
 		org.springframeworkspring-test5.0.2.RELEASE
定义框架
//基于spring框架的测试
@RunWith(SpringJUnit4ClassRunner.class)

//该方法为xml文档测试,声明Spring容器的架构指定
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration(classes={SpringConfiguration.class})

进行测试编写
    //进行字段注入
    @Autowired
    private UserService userService;

    @Autowired
    private DataSource dataSource;

    @Test
    public void test1() throws SQLException {userService.save();
        System.out.println(dataSource.getConnection());
    }

Spring集成web环境——基本三层架构

业务层——>对象层——>Dao层
配置tomcat服务器
业务层:

public class userServlet extends HttpServlet {@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) app.getBean("userService");
        userService.save();
    }
}

web.xml配置

导入相应的坐标实现UserServletcom.example.spring_ioc_1.web.userServletUserServlet/userServlet

在这里插入图片描述
在这里插入图片描述
实现监听对象,减少引用上下文实例的实现:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
spring架构实现的应用上下文架构:
不知道为啥用不了

org.springframework.web.context.ContextLoaderListenercontextConfigLocationclasspath:applicationContext.xml

在这里插入图片描述

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:Spring-创新互联
网页地址:http://hbruida.cn/article/ggggo.html