SSM学习笔记

王國慶  金牌会员 | 2024-11-24 18:56:19 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 916|帖子 916|积分 2752

SSM学习笔记

Spring_quickstart的对象注入
  1.     <bean id = "bookService" >
  2.         <property name="bookDao" ref="bookDao"/>  
  3.     </bean>
  4.     <bean id = "bookDao" />
复制代码
  1. //bookService类的bookDao对象创建方式
  2. public class bookServiceImpl implements bookService {
  3.     bookDao bookDao;//只用声明对象,但不用new,对象由IOC容器提供(在XML中配置)
  4.     @Override
  5.     public void save() {
  6.         System.out.println("bookService save...");
  7.         bookDao.save();
  8.     }
  9.     //创建对象的方法
  10.     public void setBookDao(bookDao bookDao){
  11.         this.bookDao = bookDao;
  12.     }
  13. }
复制代码
  1. //main方法的写法
  2. public class APP {
  3.     public static void main(String[] args) {
  4.         ApplicationContext ctx=new ClassPathXmlApplicationContext("ApplicationContext.xml");
  5.         bookService bookService  = (bookService) ctx.getBean("bookService");
  6.         bookService.save();
  7.     }
  8. }
复制代码
Bean配置

根本配置
  1.     <bean id = "bookService" >
  2.         <property name="bookDao" ref="bookDao"/>
  3.     </bean>
  4.     <bean id = "bookDao" />
复制代码
别名配置
  1.     <bean id = "bookService" >
  2.         <property name="bookDao" ref="bookDao"/>
  3.     </bean>
  4.     <bean id = "bookDao" />
复制代码
作用范围配置

spring默认配置的对象是单例,我们需要用scope配置,prototype是多例,singleton是单例

bean的实例化

1、容器通过构造方法实现对象
  1. public class bookDaoImpl implements bookDao {
  2.     public bookDaoImpl(){//可以用public,也可以用private
  3.         System.out.println("无参构造器...");
  4.     }
  5.     @Override
  6.     public void save() {
  7.         System.out.println("bookdao save...");
  8.     }
  9. }
复制代码
2、利用静态工厂实现对象

3、利用实例工厂实现对象

4、利用FactoryBean实现对象

Bean的生命周期


依赖注入方式

setter注入

1、引用范例
  1. public class bookServiceImpl implements bookService{
  2.     bookDao bookDao;
  3.     public void setBookDao(bookDao bookDao){
  4.         this.bookDao = bookDao;
  5.     }
  6.     //其他事务处理
  7. }
复制代码
  1.     <bean id = "bookService" >
  2.         <property name="bookDao" ref="bookDao"/>
  3.     </bean>
  4.     <bean id = "bookDao" />
复制代码
2、根本范例
  1.     <bean id = "bookService" >
  2.         <property name="bookDao" ref="bookDao"/>  
  3.     </bean>
  4.     <bean id = "bookDao" />  
复制代码
  1. public class bookDaoImpl implements bookDao {
  2.     private int num;
  3.     private String name;
  4.     public void setName(String name){
  5.         this.name = name;
  6.     }
  7.     public void setNum(int num){
  8.         this.num = num;
  9.     }
  10.     //其他事务处理
  11. }
复制代码
构造器注入 (本身做模块不推荐利用)

依赖自动装配


聚集注入

1、数组注入


2、list注入


3、set注入


4、map注入


5、property注入


第三方数据管理
  1.     <bean id = "bookService" >
  2.         <property name="bookDao" ref="bookDao"/>  
  3.     </bean>
  4.     <bean id = "bookDao" />                  
复制代码
用properties文件加载数据


加载properties文件的方式

创建容器的方式


获取Bean的方式


注解开辟

注解开辟界说Bean

  1. @component:
  2.         @service 业务层
  3.         @repository 数据层
  4.     @controller 表现层
  5. //上述四个是相同的意思,只是用下面的三个增强可读性
复制代码

注解方式界说Bean的生命周期


注解方式的依赖注入

引用范例的注入



简单范例的注入


加载外部properties文件


第三方Bean的管理



第二种扫描式不太推荐


第三方Bean的依赖注入



Spring整合Mybatis



spring整合Junit


面向AOP编程
  1. //pom.xml中的maven配置
  2. <dependency>
  3.     <groupId>org.springframework</groupId>
  4.     <artifactId>spring-context</artifactId>
  5.     <version>5.2.10.RELEASE</version>
  6. </dependency>
  7. <dependency>
  8.     <groupId>org.aspectj</groupId>
  9.     <artifactId>aspectjweaver</artifactId>
  10.     <version>1.9.4</version>
  11. </dependency>
复制代码
  1. //main方法
  2. public class app {
  3.     public static void main(String[] args) {
  4.         AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
  5.         BookDao bookDao = ctx.getBean(BookDao.class);
  6.         bookDao.update();
  7.     }
  8. }
复制代码
dao层
  1. //接口
  2. public interface BookDao {
  3.     public void save();
  4.     public void update();
  5. }
复制代码
  1. //实现类
  2. @Repository
  3. public class BookDaoImpl implements BookDao {
  4.     @Override
  5.     public void save() {
  6.         System.out.println(System.currentTimeMillis());//切面,用于对比
  7.         System.out.println("book dao save...");
  8.     }
  9.     @Override
  10.     public void update() {
  11.         System.out.println("book dao update...");
  12.     }
  13. }
复制代码
aop层
  1. //aop
  2. @Component //表示一个Bean
  3. @Aspect //添加此注解,下面的那些才能有用
  4. public class MyAdvice {
  5.     @Pointcut("execution(void com.cwnu.dao.BookDao.update())") //切入点,表示执行到update()方法
  6.     private void pc(){}
  7.     @Before("pc()") //表示在执行到update()方法之前执行method()方法,method()是切入方法
  8.     public void method(){
  9.         System.out.println(System.currentTimeMillis());
  10.     }
  11. }
复制代码
config层
  1. @Configuration //这是一个配置类
  2. @ComponentScan("com.cwnu") //扫描包,在这个扫描路径下的Bean才能实现对象
  3. @EnableAspectJAutoProxy //切面驱动,有这个注解才能使用面向AOP编程
  4. public class SpringConfig {
  5. }
复制代码
SpingMvc
  1. <dependency>
  2.   <groupId>junit</groupId>
  3.   <artifactId>junit</artifactId>
  4.   <version>3.8.1</version>
  5.   <scope>test</scope>
  6. </dependency>
  7. <dependency>
  8.   <groupId>org.springframework</groupId>
  9.   <artifactId>spring-webmvc</artifactId>
  10.   <version>5.2.10.RELEASE</version>
  11. </dependency>
  12. <dependency>
  13.   <groupId>javax.servlet</groupId>
  14.   <artifactId>javax.servlet-api</artifactId>
  15.   <version>3.1.0</version>
  16.   <scope>provided</scope>
  17. </dependency>
复制代码
controller
  1. @Controller
  2. public class UserController {
  3.     @RequestMapping("/save")
  4.     @ResponseBody
  5.     public String save(){
  6.         System.out.println("user save..");
  7.         return "{'name':'zhoujin'}";
  8.     }
  9. }
复制代码
config
  1. //SpringMvc配置
  2. @Configuration
  3. @ComponentScan("com.cwnu.controller")
  4. public class SpringMvcConfig {
  5. }
复制代码
  1. //Servlet容器,加载tomcat时候加载这个类
  2. public class ServletContainerInitConfig extends AbstractDispatcherServletInitializer {
  3.     @Override
  4.     protected WebApplicationContext createServletApplicationContext() {
  5.         AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
  6.         ctx.register(SpringMvcConfig.class); //容器加载springmvc配置
  7.         return ctx;
  8.     }
  9.     @Override
  10.     protected String[] getServletMappings() {
  11.         return new String[]{"/"};
  12.     }
  13.     @Override
  14.     protected WebApplicationContext createRootApplicationContext() {
  15.         return null;
  16.     }
  17. }
复制代码
乱码处理

对于post类请求,假如提交的数据有中文,可能会出现乱码,对此我们在ServletContainerInitConfig类里面添加过滤器
  1.     //乱码处理
  2. @Override
  3. protected Filter[] getServletFilters() {
  4.     CharacterEncodingFilter filter = new CharacterEncodingFilter();
  5.     filter.setEncoding("UTF-8");
  6.     return new Filter[]{filter};
  7. }
复制代码
传参

根本范例的传参
  1. @RequestMapping("/commonParam")@ResponseBodypublic String commonParam(@RequestParam("name") String name, @RequestParam("sex") String    <bean id = "bookService" >
  2.         <property name="bookDao" ref="bookDao"/>  
  3.     </bean>
  4.     <bean id = "bookDao" />    sex){    System.out.println(name);    System.out.println(sex);    return name;}
复制代码
pojo对象的传参
  1. @RequestMapping("/pojoParam")
  2. @ResponseBody
  3. public String pojoParam(User user){
  4.     System.out.println(user);
  5.     return user.toString();
  6. }
  7. //直接在请求路径后面添加pojo的属性,springmvc自动封装成对象
复制代码
嵌套pojo对象的传参


日期范例


相应

很简单,不赘述
Rest风格


SSM整合

SpringConfig.java
  1. @Configuration
  2. @ComponentScan("com.cwnu.service")
  3. @PropertySource("jdbc.properties")
  4. @Import({JdbcConfig.class, MybatisConfig.class})
  5. public class SpringConfig {
  6. }
复制代码
Spring整合Mybatis

JdbcConfig.java
  1. public class JdbcConfig {
  2.     @Value("${jdbc.driver}")
  3.     private String driver;
  4.     @Value("${jdbc.url}")
  5.     private String url;
  6.     @Value("${jdbc.username}")
  7.     private String username;
  8.     @Value("${jdbc.password}")
  9.     private String password;
  10.     @Bean
  11.     public DataSource dataSource(){
  12.         DruidDataSource dataSource = new DruidDataSource();
  13.         dataSource.setDriverClassName(driver);
  14.         dataSource.setUrl(url);
  15.         dataSource.setUsername(username);
  16.         dataSource.setPassword(password);
  17.         return dataSource;
  18.     }
  19. }
复制代码
MybatisConfig.java
  1. public class MybatisConfig {
  2.     @Bean
  3.     public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
  4.         SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
  5.         sqlSessionFactoryBean.setTypeAliasesPackage("com.cwnu.domain");
  6.         sqlSessionFactoryBean.setDataSource(dataSource);
  7.         return sqlSessionFactoryBean;
  8.     }
  9.     @Bean
  10.     public MapperScannerConfigurer mapperScannerConfigurer(){
  11.         MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
  12.         mapperScannerConfigurer.setBasePackage("com.cwnu.dao");
  13.         return mapperScannerConfigurer;
  14.     }
  15. }
复制代码
Spring整合SpringMvc

ServletConfig.java
  1. public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
  2.     @Override
  3.     protected Class<?>[] getRootConfigClasses() {
  4.         return new Class[]{SpringConfig.class};
  5.     }
  6.     @Override
  7.     protected Class<?>[] getServletConfigClasses() {
  8.         return new Class[]{SpringMvcConfig.class};
  9.     }
  10.     @Override
  11.     protected String[] getServletMappings() {
  12.         return new String[]{"/"};
  13.     }
  14. }
复制代码
SpringMvcConfig.java
  1. @Configuration
  2. @ComponentScan("com.cwnu.controller")
  3. @EnableWebMvc
  4. public class SpringMvcConfig {
  5. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表